在 Ubuntu 上安裝 Docker
以下 64 位版本的 Ubuntu Linux 支援 Docker :
- Ubuntu Xenial
16.04(LTS)
- Ubuntu Wily 15.10
- Ubuntu Trusty
14.04(LTS)
- Ubuntu Precise
12.04(LTS)
幾個筆記:
以下說明僅涉及使用 Docker 軟體包進行安裝,這可確保獲取 Docker 的最新官方版本。如果你只需要使用
Ubuntu-managed
軟體包進行安裝,請參閱 Ubuntu 文件(出於顯而易見的原因,不建議使用)。
Ubuntu Utopic 14.10 和 15.04 存在於 Docker 的 APT 儲存庫中,但由於已知的安全問題而不再受到官方支援。
先決條件
- Docker 僅適用於 64 位 Linux 安裝。
- Docker 需要 Linux 核心版本 3.10 或更高版本(
Ubuntu Precise 12.04
除外,它需要 3.13 或更高版本)。早於 3.10 的核心缺少執行 Docker 容器所需的一些功能,並且包含導致資料丟失的已知錯誤,並且在某些情況下經常出現恐慌。使用命令uname -r
檢查當前核心版本。如果你需要通過向下滾動來更新Ubuntu Precise (12.04 LTS)
核心,請檢視此帖子。請參閱此 WikiHow 帖子以獲取其他 Ubuntu 安裝的最新版本。
更新 APT 來源
這需要完成以便從 Docker 儲存庫訪問包。
- 使用
sudo
或root
許可權以使用者身份登入計算機。 - 開啟終端視窗。
- 更新程式包資訊,確保 APT 與 https 方法一起使用,並且已安裝 CA 證書。
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
-
新增新的
GPG
金鑰。此命令從金鑰伺服器hkp://ha.pool.sks-keyservers.net:80
下載 ID 為58118E89F3A912897C070ADBF76221572C52609D
的金鑰,並將其新增到adv keychain
。有關更多資訊,請參閱man apt-key
的輸出。$ sudo apt-key adv \ --keyserver hkp://ha.pool.sks-keyservers.net:80 \ --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
-
在下表中找到與你的 Ubuntu 版本對應的條目。這決定了 APT 搜尋 Docker 軟體包的位置。如果可能,執行 Ubuntu 的長期支援(LTS)版本。
Ubuntu 版本 | 知識庫 |
---|---|
Precise 12.04(LTS) |
deb https://apt.dockerproject.org/repo ubuntu-precise main |
Trusty 14.04(LTS) |
deb https://apt.dockerproject.org/repo ubuntu-trusty main |
Wily 15.10 |
deb https://apt.dockerproject.org/repo ubuntu-wily main |
Xenial 16.04(LTS) |
deb https://apt.dockerproject.org/repo ubuntu-xenial main |
注意: Docker 不提供所有體系結構的包。二進位制檔案是每晚構建的,你可以從
https://master.dockerproject.org
下載它們。要在多架構系統上安裝 docker,請在條目中新增[arch=...]
子句。有關詳細資訊,請參閱 Debian Multiarch wiki 。
-
執行以下命令,將佔位符
<REPO>
的作業系統條目替換為。$ echo“”| sudo tee /etc/apt/sources.list.d/docker.list
-
通過執行
sudo apt-get update
更新APT
包索引。 -
驗證
APT
是否從正確的儲存庫中提取。
執行以下命令時,將為可供你安裝的每個版本的 Docker 返回一個條目。每個條目都應該有 URL https://apt.dockerproject.org/repo/
。當前安裝的版本標有***
。參見下面的示例輸出。
$ apt-cache policy docker-engine
docker-engine:
Installed: 1.12.2-0~trusty
Candidate: 1.12.2-0~trusty
Version table:
*** 1.12.2-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
100 /var/lib/dpkg/status
1.12.1-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.12.0-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
從現在開始執行 apt-get upgrade
,APT
從新的儲存庫中拉出來。
Ubuntu 版本的先決條件
對於 Ubuntu Trusty(14.04)
,Wily(15.10)和 Xenial(16.04)
,安裝 linux-image-extra-*
核心軟體包,允許你使用 aufs
儲存驅動程式。
要安裝 linux-image-extra-*
軟體包:
-
在 Ubuntu 主機上開啟終端。
-
使用命令
sudo apt-get update
更新包管理器。 -
安裝推薦的軟體包。
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
-
繼續 Docker 安裝
對於 Ubuntu Precise(12.04 LTS),Docker 需要 3.13 核心版本。如果你的核心版本低於 3.13,則必須升級它。請參閱此表以檢視你的環境所需的軟體包:
包 | 描述 |
---|---|
linux-image-generic-lts-trusty |
通用 Linux 核心映像。這個核心內建了 AUFS 。這是執行 Docker 所必需的。 |
linux-headers-generic-lts-trusty |
允許依賴於它們的 ZFS 和 VirtualBox guest additions 等包。如果你沒有為現有核心安裝標頭,那麼你可以跳過 trusty 核心的這些標頭。如果你不確定,應該包括此包以確保安全。 |
xserver-xorg-lts-trusty |
在沒有 Unity / Xorg 的非圖形環境中可選。在具有圖形環境的計算機上執行 Docker 時需要。 |
ligbl1-mesa-glx-lts-trusty |
要了解有關這些程式包的原因的更多資訊,請閱讀 backported 核心的安裝說明,特別是 LTS Enablement Stack 。請參閱每個版本下的註釋 5。 |
要升級核心並安裝其他軟體包,請執行以下操作:
-
在 Ubuntu 主機上開啟終端。
-
使用命令
sudo apt-get update
更新包管理器。 -
安裝必需和可選包。
$ sudo apt-get install linux-image-generic-lts-trusty
-
對需要安裝的其他軟體包重複此步驟。
-
使用命令
sudo reboot
重新啟動主機以使用更新的核心。 -
重啟後,繼續安裝 Docker。
安裝最新版本
確保滿足先決條件,然後按照以下步驟操作。
注意: 對於生產系統,建議你安裝特定版本, 以免意外更新 Docker。你應該仔細規劃生產系統的升級。
-
以具有
sudo
許可權的使用者身份登入到你的 Ubuntu 安裝。 (可能執行sudo -su
)。 -
通過執行
sudo apt-get update
更新你的 APT 包索引。 -
使用命令
sudo apt-get install docker-engine
安裝 Docker。 -
使用命令
sudo service docker start
啟動docker
守護程式。 -
通過執行 hello-world 映像驗證是否正確安裝了
docker
。$ sudo docker run hello-world
此命令下載測試映像並在容器中執行它。當容器執行時,它會列印一條資訊性訊息並退出。
以非 root 使用者身份管理 Docker
如果你在使用 docker 命令時不想使用 sudo
,請建立一個名為 docker
的 Unix 組並向其新增使用者。當 docker
守護程式啟動時,它會使 docker 組對 Unix 套接字的所有權進行讀/寫。
要建立 docker
組並新增你的使用者:
-
以具有
sudo
許可權的使用者身份登入 Ubuntu。 -
使用命令
sudo groupadd docker
建立docker
組。 -
將你的使用者新增到
docker
組。$ sudo usermod -aG docker $USER
-
登出並重新登入,以便重新評估你的組成員身份。
-
驗證你是否可以在沒有
sudo
許可權的情況下使用docker
命令。$ docker run hello-world
如果失敗,你將看到錯誤:
Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
檢查是否為 shell 設定了 DOCKER_HOST
環境變數。
$ env | grep DOCKER_HOST
如果已設定,則上述命令將返回結果。如果是這樣,請取消設定。
$ unset DOCKER_HOST
你可能需要在~/.bashrc
或~/.profile
等檔案中編輯環境,以防止錯誤地設定 DOCKER_HOST
變數。