Install Docker on Ubuntu

目前支持的 Ubuntu 版本:linux

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

 

Prerequisites

內核版本不能低於 3.10docker

$ uname -r
3.11.0-15-generic

若是以前使用 APT 安裝過 Docker,需確保更新 APT 源至新的 Docker repository。ubuntu

 

Update your apt sources

一、使用 sudo 權限或 root 用戶登陸安全

二、開啓一個終端窗口服務器

三、更新包信息,確保 APT 以 https 方式工做,安裝 CA 證書網絡

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

四、添加新的 GPG keyapp

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

五、編輯 /etc/apt/sources.list.d/docker.list 文件,若是不存在就建立一個socket

六、刪除全部已存在的條目tcp

七、添加一條性能

# 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

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

九、更新 APT 包索引

$ sudo apt-get update

十、清空舊的 repo(若是存在的話)

$ sudo apt-get purge lxc-docker

十一、驗證 repository 生效

$ apt-cache policy docker-engine

 

Prerequisites by Ubuntu Version

對於 Ubuntu 14.0四、15.十、16.04,建議安裝 linux-image-extra 內核包,linux-image-extra 包使你可使用 aufs 存儲驅動。

一、開啓一個終端窗口

二、更新包管理器

$ sudo apt-get update

三、安裝建議的包

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

四、繼續安裝 Docker

若是是 Ubuntu 14.04 或 12.04,須要安裝 apparmor

apt-get install apparmor

 

Install

確保先決條件已經知足,而後開始安裝 Docker

一、使用 sudo 權限用戶登陸

二、更新 APT 包索引

$ sudo apt-get update

三、安裝 Docker

$ sudo apt-get install docker-engine

四、啓動 Docker 守護進程

$ sudo service docker start

五、驗證 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 組並添加用戶:

一、使用 sudo 權限用戶登陸

二、建立 docker 組

$ sudo groupadd 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?

檢查 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%。

一、使用 sudo 權限用戶登陸

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

三、設置 GRUB_CMDLINE_LINUX 的值以下

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

四、保存並關閉文件

五、更新 GRUB

$ sudo update-grub

六、重啓系統

 

Enable UFW forwarding

若是有在使用 UFW 防火牆,還須要作些額外的配置。Docker 使用 bridge 來管理容器網絡,默認狀況下 UFW 會丟棄全部的轉發流量,所以須要配置 UFW 的轉發策略。

一樣的,UFW 的默認規則會拒絕全部入站流量。遠程鏈接 Docker,啓用 TLS 時的默認端口是 2376,未啓用時是 2375。Docker 默認不啓用 TLS,未啓用 TLS 時,通信是不加密的。

配時 UFW 容許入站的鏈接:

一、使用 sudo 權限用戶登陸

二、確認 UFW 是否安裝並啓用

$ sudo ufw status

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

$ sudo nano /etc/default/ufw

四、設置 DEFAULT_FORWARD_POLICY 爲:

DEFAULT_FORWARD_POLICY="ACCEPT"

五、保存並關閉文件

六、從新加載 UFW

$ sudo ufw reload

七、容許 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 及如下版本配置方法:

一、使用 sudo 權限用戶登陸

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

$ sudo nano /etc/default/docker

三、添加一條設置

DOCKER_OPTS="--dns 8.8.8.8"

也能夠設置多個 dns 服務器

--dns 8.8.8.8 --dns 192.168.1.1

四、保存並關閉文件

五、重啓 Docker 守護進程

$ sudo service docker restart

 

或者經過禁用 dnsmasq 的方法:

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

$ sudo nano /etc/NetworkManager/NetworkManager.conf

二、註釋掉 dns=dnsmasq 行:

dns=dnsmasq

三、保存並關閉文件

四、重啓 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

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

相關文章
相關標籤/搜索