介紹 Docker 的運作概念
相較於傳統的虛擬機器(例如 VirtualBox 與 VMWare 等),Docker 是一個輕量級的容器,只包含特定程式執行所需要的必要元件,不像虛擬機器要包含整個作業系統,所以大小會比較小,執行效能也會比較高。
基本觀念
Docker 的影像(image)是一個可以獨立執行的輕量級套件,其包含所有執行程式所需要的函式庫、環境變數與設定檔等,而容器(container)則是一個影像(image)的執行實體,就是將影像(image)載入至記憶體中執行之後的環境。
預設的情況下,容器(container)是一個與 host 機器環境分開的獨立執行環境,但其程式卻可以在原生 host 機器的核心中運行,因此 Docker 的執行效能會比傳統虛擬機器更好。
VM 與 Docker 的比較
VM 除了包含程式與函式庫之外,還要加上整個作業系統(Guest OS)。
虛擬機架構 |
---|
Docker 容器的架構下,容器只需要包含程式與其所需要的函式庫,剩下的部份則由 Docker 容器來處理,所有的程式都共用同一個 host 系統核心。
Docker 容器架構 |
---|
安裝 Docker 環境
在開始使用 Docker 之前,請先在系統上安裝 Docker 的環境,大部分的作業系統 Docker 都有直接支援,這裡示範在 Ubuntu Linux 中的安裝步驟,若使用 CentOS Linux 的人可參考 CentOS Linux 安裝 Docker 的教學,或是 Docker 官方的文件。
首先移除舊版的 Docker 套件,官方的建議指令是:
sudo apt-get remove docker docker-engine
Ubuntu Linux 中舊版的 Docker 套件是docker.io
:
sudo apt-get remove docker.io
安裝linux-image-extra-*
套件,讓 Docker 可以使用aufs
儲存驅動程式:
sudo apt-get install \
linux-image-extra-$(uname -r) \
linux-image-extra-virtual
安裝基本套件:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
加入 Docker 的 GPG 金鑰:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
加入 Docker 套件庫:
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
更新套件庫:
sudo apt-get update
安裝 Docker CE(Community Edition):
sudo apt-get install docker-ce
檢查 Docker 是否可以正常運作:
sudo docker run hello-world
正常來說,執行之後就會輸出類似這樣的訊息:
Docker hello-world 輸出訊息 |
---|
如果要以一般的使用者的權限執行 Docker,要先在系統中加入docker
群組:
sudo groupadd docker
在將要執行 Docker 的使用者加入至docker
群組內:
sudo usermod -aG docker $USER
這樣就完成了。如果沒有把使用者加入docker
群組的話,使用時就會出現類似這樣的錯誤訊息:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.27/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
如果要設定 Docker 的服務是否要在開機時自動啟動,可透過systemd
的控制介面:
sudo systemctl enable docker # 啟動 Docker 服務
sudo systemctl disable docker # 關閉 Docker 服務
最後檢查一下 Docker 的版本。
docker --version
Docker version 17.03.1-ce, build c6d412e
本教學內容適用於 1.13 或更新版的 Docker 環境。
引用來源:
https://blog.gtwang.org/virtualization/docker-basic-tutorial/