Install Docker on Ubuntu


目前支持的 Ubuntu 版本:

  • Ubuntu Xenial 16.04 (LTS)
  • Ubuntu Wily 15.10
  • Ubuntu Trusty 14.04 (LTS)
  • Ubuntu Precise 12.04 (LTS)

 

Prerequisites

內核版本不能低於 3.10

$ uname -r
3.11.0-15-generic

如果之前使用 APT 安裝過 Docker,需確保更新 APT 源至新的 Docker repository。

 

Update your apt sources

1、使用 sudo 權限或 root 用戶登錄

2、開啟一個終端窗口

3、更新包信息,確保 APT 以 https 方式工作,安裝 CA 證書

 $ sudo apt-get update
 $ sudo apt-get install apt-transport-https ca-certificates

4、添加新的 GPG key

$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

5、編輯 /etc/apt/sources.list.d/docker.list 文件,如果不存在就創建一個

6、刪除所有已存在的條目

7、添加一條

# On Ubuntu Trusty 14.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-trusty main

# On Ubuntu Xenial 16.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-xenial main

8、保存並關閉 /etc/apt/sources.list.d/docker.list 文件

9、更新 APT 包索引

$ sudo apt-get update

10、清空舊的 repo(如果存在的話)

$ sudo apt-get purge lxc-docker

11、驗證 repository 生效

$ apt-cache policy docker-engine

 

Prerequisites by Ubuntu Version

對於 Ubuntu 14.04、15.10、16.04,建議安裝 linux-image-extra 內核包,linux-image-extra 包使你可以使用 aufs 存儲驅動。

1、開啟一個終端窗口

2、更新包管理器

$ sudo apt-get update

3、安裝建議的包

$ sudo apt-get install linux-image-extra-$(uname -r)

4、繼續安裝 Docker

如果是 Ubuntu 14.04 或 12.04,需要安裝 apparmor

apt-get install apparmor

 

Install

確保先決條件已經滿足,然后開始安裝 Docker

1、使用 sudo 權限用戶登錄

2、更新 APT 包索引

$ sudo apt-get update

3、安裝 Docker

$ sudo apt-get install docker-engine

4、啟動 Docker 守護進程

$ sudo service docker start

5、驗證 Docker 是否正確安裝

$ sudo docker run hello-world

這個命令會下載一個測試鏡像並在容器內運行,它會輸出一組信息到屏幕,然后退出。

 

Optional configurations

Create a Docker group

Docker 守護進程與 Unix socket 綁定,而不是 TCP 端口。默認情況下 Unix socket 屬於 root 用戶,其他用戶可以通過 sudo 命令進行訪問。因此,Docker 守護進程一直是以 root 用戶的身份運行。

為了避免每次使用 docker 命令需要 sudo,可以創建一個名字是 docker 的 Unix 組,把用戶加到這個組里。這樣,當 docker 守護進程啟動時,它會給這個組賦予 Unix socket 的讀寫權限。

警告:docker 組相當於 root 用戶,這對於你的系統有哪些安全影響,詳細細節請參照 Docker Daemon Attack Surface 文檔。

創建 docker 組並添加用戶:

1、使用 sudo 權限用戶登錄

2、創建 docker 組

$ sudo groupadd docker

3、將用戶添加到 docker 組

$ sudo usermod -aG docker $USER

4、注銷重新登陸

5、驗證不需要 sudo 就可以執行 docker 命令

$ docker run hello-world

如果失敗提示如下類似信息:

Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?

檢查 DOCKER_HOST 環境變量是否已設置。

 

Adjust memory and swap accounting

運行 docker 時,可能會收到如下警告:

WARNING: Your kernel does not support cgroup swap limit. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.

為避免出現此類信息,需要在你的系統上啟用 memory and swap accounting。

啟用后,會增加內存開銷和性能下降,即時 docker 沒在運行的時候。內存開銷會增加約 1%,性能下降約 10%。

1、使用 sudo 權限用戶登錄

2、編輯 /etc/default/grub 文件

3、設置 GRUB_CMDLINE_LINUX 的值如下

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

4、保存並關閉文件

5、更新 GRUB

$ sudo update-grub

6、重啟系統

 

Enable UFW forwarding

如果有在使用 UFW 防火牆,還需要做些額外的配置。Docker 使用 bridge 來管理容器網絡,默認情況下 UFW 會丟棄所有的轉發流量,因此需要配置 UFW 的轉發策略。

同樣的,UFW 的默認規則會拒絕所有入站流量。遠程連接 Docker,啟用 TLS 時的默認端口是 2376,未啟用時是 2375。Docker 默認不啟用 TLS,未啟用 TLS 時,通訊是不加密的。

配時 UFW 允許入站的連接:

1、使用 sudo 權限用戶登錄

2、確認 UFW 是否安裝並啟用

$ sudo ufw status

3、編輯 /etc/default/ufw 文件

$ sudo nano /etc/default/ufw

4、設置 DEFAULT_FORWARD_POLICY 為:

DEFAULT_FORWARD_POLICY="ACCEPT"

5、保存並關閉文件

6、重新加載 UFW

$ sudo ufw reload

7、允許 Docker 端口的入站訪問

$ sudo ufw allow 2375/tcp

 

Configure a DNS server for use by Docker

Ubuntu 系統一般都使用 127.0.0.1 作為默認的 nameserver,在 /etc/resolv.conf 中配置。

這樣啟動容器時會有警告:

WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers : [8.8.8.8 8.8.4.4]

原因是 Docker 容器無法使用本地的 DNS 服務器,默認是使用外部的 DNS。

為避警告,可以指定一個 DNS 服務器或者在 NetworkManager 中禁用 dnsmasq,禁用 dnsmasq 會導致某些網絡下 DNS 解析變慢。

Ubuntu 15.10 及以上版本是使用 systemd 作為啟動和服務管理器,參照 control and configure Docker with systemd 文檔

Ubuntu 14.10 及以下版本配置方法:

1、使用 sudo 權限用戶登錄

2、編輯 /etc/default/docker 文件

$ sudo nano /etc/default/docker

3、添加一條設置

DOCKER_OPTS="--dns 8.8.8.8"

也可以設置多個 dns 服務器

--dns 8.8.8.8 --dns 192.168.1.1

4、保存並關閉文件

5、重啟 Docker 守護進程

$ sudo service docker restart

 

或者通過禁用 dnsmasq 的方法:

1、編輯 /etc/NetworkManager/NetworkManager.conf 文件

$ sudo nano /etc/NetworkManager/NetworkManager.conf

2、注釋掉 dns=dnsmasq 行:

dns=dnsmasq

3、保存並關閉文件

4、重啟 NetworkManager 和 Docker

$ sudo restart network-manager
$ sudo restart docker

 

Configure Docker to start on boot

Ubuntu 15.04 版本以上使用 systemd 作為啟動和服務管理器,14.10 版本以下使用 upstart。

15.04 以上版本,配置 docker 開機啟動

$ sudo systemctl enable docker

14.10 以下版本,通過上述的安裝過程會自動配置開機啟動

 

Upgrade Docker

使用 apt-get 安裝 Docker 最新版本:

$ sudo apt-get upgrade docker-engine

 

Uninstallation

卸載 Docker 包:

$ sudo apt-get purge docker-engine

卸載 Docker 及其依賴包:

$ sudo apt-get autoremove --purge docker-engine

上訴命令不會移除鏡像、容器、卷和用戶創建的配置文件,使用如下命令可刪除所有的鏡像、容器和卷:

$ rm -rf /var/lib/docker

必須手動刪除用戶創建的配置文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM