Ubuntu、Debian 系列安裝 Docker
系統要求
Docker 支援以下版本的 Ubuntu 和 Debian 作業系統:
- Ubuntu Xenial 16.04 (LTS)
- Ubuntu Trusty 14.04 (LTS)
- Ubuntu Precise 12.04 (LTS)
- Debian testing stretch (64-bit)
- Debian 8 Jessie (64-bit)
- Debian 7 Wheezy (64-bit)(必須啟動 backports)
Ubuntu 發行版中,LTS(Long-Term-Support)長期支援版本,會獲得 5 年的升級維護支援,這樣的版本會更穩定,因此在生產環境中推薦使用 LTS 版本。
Docker 目前支援的 Ubuntu 版本最低為 12.04 LTS,但從穩定性上考慮,推薦使用 14.04 LTS 或更高的版本。
Docker 需要安裝在 64 位的 x86 平台或 ARM 平台上(如樹莓派),並且要求核心版本不低於 3.10。但實際上核心越新越好,過低的核心版本可能會出現部分功能無法使用,或是不穩定。
使用者可以透過如下指令檢查自己的核心版本詳細資訊:
$ uname -a
Linux device 4.4.0-45-generic #66~14.04.1-Ubuntu SMP Wed Oct 19 15:05:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
升級核心
如果核心版本過低,可以用下面的指令升級系統核心。
Ubuntu 12.04 LTS
sudo apt-get install -y --install-recommends linux-generic-lts-trusty
Ubuntu 14.04 LTS
sudo apt-get install -y --install-recommends linux-generic-lts-xenial
Debian 7 Wheezy
Debian 7 的核心 預設為 3.2,為了滿足 Docker 的需求,應該安裝 backports
的核心。
執行下面的指令加入 backports
源:
$ echo "deb http://http.debian.net/debian wheezy-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
升級到 backports
核心:
$ sudo apt-get update
$ sudo apt-get -t wheezy-backports install linux-image-amd64
Debian 8 Jessie
Debian 8 的核心 預設為 3.16,滿足基本的 Docker 執行條件。但是如果打算使用 overlay2
儲存層驅動,或某些功能不夠穩定希望升級到較新版本的核心,可以加入 backports
源,升級到新版本的核心。
執行下面的指令加入 backports
源:
$ echo "deb http://http.debian.net/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
升級到 backports
核心:
$ sudo apt-get update
$ sudo apt-get -t jessie-backports install linux-image-amd64
需要注意的是,升級到 backports
的核心之後,會因為 AUFS
核心模組無法使用,而使用 預設的 devicemapper
驅動,並且設定為 loop-lvm
,這是不推薦的。因此,不要忘記安裝 Docker 後,設定 overlay2
儲存層驅動。
設定 GRUB 引導參數
在 Docker 使用工作階段會議,或是在 docker info
資訊中,可能會看到下面的警告資訊:
WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
kernel does not support swap limit capabilities. Limitation discarded.
或是
WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No oom kill disable support
如果需要這些功能,就需要修改 GRUB 的設定檔 /etc/default/grub
,在 GRUB_CMDLINE_LINUX
中加入核心引導參數 cgroup_enable=memory swapaccount=1
。
然後不要忘記了更新 GRUB:
$ sudo update-grub
$ sudo reboot
使用指令碼自動安裝
Docker 官方為了簡化安裝流程,提供了一套安裝指令碼,Ubuntu 和 Debian 系統可以使用這套指令碼安裝:
curl -sSL https://get.docker.com/ | sh
執行這個指令後,指令碼就會自動的將一切準備工作做好,並且把 Docker 安裝在系統中。
不過,由於偉大的牆的原因,在國內使用這個指令碼可能會出現某些下載出現錯誤的情況。國內的一些雲服務商提供了這個指令碼的修改版本,使其使用國內的 Docker 軟體源映像檔安裝,這樣就避免了牆的干擾。
阿里雲的安裝指令碼
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
DaoCloud 的安裝指令碼
curl -sSL https://get.daocloud.io/docker | sh
手動安裝
安裝所需的套裝軟體
可選核心模組
從 Ubuntu 14.04 開始,一部分核心模組移到了可選核心模組包(linux-image-extra-*
),以減少核心套裝軟體的體積。正常安裝的系統應該會包含可選核心模組包,而一些裁剪後的系統可能會將其精簡掉。AUFS
核心驅動屬於可選核心模組的一部分,作為推薦的 Docker 儲存層驅動,一般建議安裝可選核心模組包以使用 AUFS
。
如果系統沒有安裝可選核心模組的話,可以執行下面的指令來安裝可選核心模組包:
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
12.04 LTS 圖形界面
在 Ubuntu 12.04 桌面環境下,需要一些額外的套裝軟體,可以用下面的指令安裝。
$ sudo apt-get install xserver-xorg-lts-trusty libgl1-mesa-glx-lts-trusty
加入 APT 映像檔源
雖然 Ubuntu 系統軟體源中有 Docker,名為 docker.io
,但是不應該使用系統源中的這個版本,它的版本太舊。我們需要使用 Docker 官方提供的軟體源,因此,我們需要加入 APT 軟體源。
由於官方源使用 HTTPS 以確保軟體下載程序中不被篡改。因此,我們首先需要加入使用 HTTPS 傳輸的套裝軟體以及 CA 證書。
國內的一些軟體源映像檔(比如阿里雲)不是太在意系統安全上的細節,可能依舊使用不安全的 HTTP,對於這些源可以不執行這一步。
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
為了確認所下載套裝軟體的合法性,需要加入 Docker 官方軟體源的 GPG 密鑰。
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
然後,我們需要向 source.list
中加入 Docker 軟體源,下表列出了不同的 Ubuntu 和 Debian 版本對應的 APT 源。
作業系統版本 | REPO |
---|---|
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 |
Xenial 16.04 (LTS) | deb https://apt.dockerproject.org/repo ubuntu-xenial main |
Debian 7 Wheezy | deb https://apt.dockerproject.org/repo debian-wheezy main |
Debian 8 Jessie | deb https://apt.dockerproject.org/repo debian-jessie main |
Debian Stretch/Sid | deb https://apt.dockerproject.org/repo debian-stretch main |
用下面的指令將 APT 源新增至 source.list
(將其中的 <REPO>
取代為上表的值):
$ echo "<REPO>" | sudo tee /etc/apt/sources.list.d/docker.list
加入成功後,更新 apt 套裝軟體快取。
$ sudo apt-get update
安裝 Docker
在一切準備就緒後,就可以安裝最新版本的 Docker 了,套裝軟體名稱為 docker-engine
。
$ sudo apt-get install docker-engine
如果系統中存在舊版本的 Docker (lxc-docker
, docker.io
),會提示是否先刪除,選擇是即可。
啟動 Docker 引擎
Ubuntu 12.04/14.04、Debian 7 Wheezy
$ sudo service docker start
Ubuntu 16.04、Debian 8 Jessie/Stretch
$ sudo systemctl enable docker
$ sudo systemctl start docker
建立 docker 使用者組
預設情況下,docker
指令會使用 Unix socket 與 Docker 引擎通訊。而只有 root
使用者和 docker
組的使用者才可以存取 Docker 引擎的 Unix socket。出於安全考慮,一般 Linux 系統上不會直接使用 root
使用者。因此,更好地做法是將需要使用 docker
的使用者加入 docker
使用者組。
建立 docker
組:
$ sudo groupadd docker
將目前使用者加入 docker
組:
$ sudo usermod -aG docker $USER