前提條件
操作系統
docker-ce支持的ubuntu版本:
- Bionic 18.04 (LTS)
- Xenial 16.04 (LTS)
- Trusty 14.04 (LTS)
卸載舊版本docker[可選]
$ sudo apt-get remove docker docker-engine docker.io --purge
支持的存儲驅動程序
對於ubuntu16.04及以上版本,其linux內核中包含了對於OverlayFS的支持。Docker CE默認使用overlay2
存儲引擎,如果想要使用aufs
,可參考aufs
安裝 Docker CE
方法1: 使用repository進行安裝
Step1. 更新源,安裝相應的依賴包
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
Step2 安裝Docker鏡像
方式1> 安裝國內阿里Docker CE鏡像[國內推薦]
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
方式2> 安裝docker的官方 GPG key[國內不推薦,需要翻牆]:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
可能存在的問題:
如果等了很長時間也下載不了,說明被牆了,需要通過代理下載,例如使用本地的shawsocks代理
$ export https_proxy=socks5://127.0.0.1:1080
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
安裝完成后,最好使用指紋9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
對key進行驗證
$ sudo apt-key fingerprint 0EBFCD88
pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22
Step3. 安裝穩定版的repository
方式1> 阿里repository[國內推薦]
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
方式2> 官方repository[國內不推薦]
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
4. 安裝Docker CE
方式1) 安裝最新版Docker CE
$ sudo apt-get update
$ sudo apt-get install docker-ce
如果使用國外官方鏡像,可能存在以下問題:
update更新時間過長,一直卡住不動,形如:
$ sudo apt-get update
Hit:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
Hit:2 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease
Hit:3 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease
Hit:4 http://mirrors.aliyun.com/ubuntu xenial-security InRelease
0% [Working]
或是
Could not resolve host: download.docker.com
Reading package lists... Done
W: Failed to fetch https://download.docker.com/linux/ubuntu/dists/xenial/InRelease Could not resolve host: download.docker.com
或是
Err:5 https://download.docker.com/linux/ubuntu xenial InRelease
Operation timed out after 0 milliseconds with 0 out of 0 bytes received
Reading package lists... Done
W: Failed to fetch https://download.docker.com/linux/ubuntu/dists/xenial/InRelease Operation timed out after 0 milliseconds with 0 out of 0 bytes received
方式2) 安裝指定版本Docker CE
# 獲取可用版本
$ apt-cache madison docker-ce
# 安裝指定版本
$ sudo apt-get install docker-ce=<VERSION>
例如:
$ sudo apt-get install docker-ce=17.06.2~ce-0~ubuntu
5. 驗證Docker CE是否成功安裝
方式1) 以root身份運行hello-world
$ sudo docker run hello-world
方式2) 以普通用戶身份運行hello-world
# 0. 首先要確保docker服務已經啟動
$ systemctl status docker
# 1. 使用root身份創建用戶並設置密碼,給用戶添加及sudo權限[如果有普通用戶可跳過,這里是為了演示需要]
# 創建新用戶bob
# useradd -m -d /home/bob -s /bin/bash bob
# passwd bob
# tail -n 1 /etc/passwd
bob:x:1000:1000::/home/bob:/bin/bash
# 該bob添加sudo權限
# usermod -aG sudo bob
# 下面使用bob登錄
# su - bob
# 2. 創建名為docker的組
$ sudo groupadd docker
# 3. 將當前用戶加入到docker組中
$ sudo usermod -aG docker $USER
# 4. 注銷,如果遠程登錄先斷開連接在重新連接,使得usermod修改生效,這一步非常重要
# 5. 驗證
$ docker run hello-world
usermod修改后不會立即生效
# 查看當前用戶所屬組
$ groups
bob sudo
# 查看指定用戶所屬組
$ groups bob
bob : bob sudo
# 查看當前用戶信息
$ id
uid=1000(bob) gid=1000(bob) groups=1000(bob),27(sudo)
$ sudo usermod -aG docker bob
$ groups
bob sudo
$ id
uid=1000(bob) gid=1000(bob) groups=1000(bob),27(sudo)
# 可以發現usermod修改后並未立即生效
如果是遠程登錄,可以先斷開連接再重新連接,或是使用su進行切換命令
$ su - bob
Password:
$ groups
bob sudo docker
$ id
uid=1000(bob) gid=1000(bob) groups=1000(bob),27(sudo),999(docker)
# 重新登錄發現修改生效
方法2: deb包安裝
方法3: 使用腳本一鍵安裝
方式1> 使用阿里Docker鏡像源安裝腳本[國內推薦]
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
方式2> 使用官方安裝腳本
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
開機啟動
# 設置開機啟動
$ sudo systemctl enable docker
# 關閉開機啟動
$ sudo systemctl disable docker
Docker CE 徹底卸載
# Step1: 關閉服務
$ sudo service docker stop
# Step2: 查看安裝的軟件包
$ dpkg -l | grep -i docker
# Step3: 卸載
$ sudo apt-get purge -y docker-engine docker docker.io docker-ce
$ sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce
# Step4: 刪除相關數據和配置文件
$ sudo ls /var/lib/docker/
aufs containers image network plugins swarm tmp trust volumes
$ sudo rm -rf /var/lib/docker
$ sudo rm /etc/apparmor.d/docker
$ sudo groupdel docker
$ sudo rm -rf /var/run/docker /var/run/docker.sock
# Step5: 刪除interface docker0
$ sudo ifconfig
docker0 Link encap:Ethernet HWaddr 02:42:03:99:8a:e8
$ sudo ip link del docker0