升級(jí) Docker 引擎(Engine)是一項(xiàng)重要的任務(wù),尤其是生產(chǎn)環(huán)境。
下面介紹升級(jí) Docker 引擎的關(guān)鍵步驟,以及一些相關(guān)的小建議和升級(jí)示例。
升級(jí) Docker 引擎的關(guān)鍵步驟如下。
需要重視升級(jí)操作的每個(gè)前置條件,包括確保容器配置了正確的重啟策略;在 Swarm Mode 模式下使用服務(wù)時(shí),需要確保正確配置了 draining node。
當(dāng)完成了上述前置條件的檢查之后,可以通過如下步驟完成升級(jí)操作。
⒈ 停止 Docker 守護(hù)程序。
⒉ 移除舊版本 Docker。
⒊ 安裝新版本 Docker。
⒋ 配置新版本的 Docker 為開機(jī)自啟動(dòng)。
⒌ 確保容器重啟成功。
上面就是全部的關(guān)鍵步驟。下面通過具體例子來進(jìn)行介紹。
不同版本的 Linux 在升級(jí) Docker 的時(shí)候,命令可能略有區(qū)別。這里我們以 Ubuntu 16.04 和 Windows Server 2016 作為例子進(jìn)行介紹。
假設(shè)已經(jīng)完成了全部的升級(jí)前置步驟并且 Docker 處于可以升級(jí)的狀態(tài),同時(shí)還可以用 root 用戶身份運(yùn)行升級(jí)命令。
以 root 用戶運(yùn)行升級(jí)命令是不推薦的,但是可以簡(jiǎn)化示例。如果不采用 root 用戶運(yùn)行升級(jí)命令,那最好不過了!那么需要通過 sudo 來執(zhí)行下列指令。
⒈ 更新 APT 包列表。
$ apt-get update
⒉ 卸載當(dāng)前 Docker。
$ apt-get remove docker docker-engine docker-ce docker.io -y
在之前的版本中,Docker 引擎的包名可能有多個(gè)。這條命令能夠確保已經(jīng)安裝的 Docker 包全部被刪除。
⒊ 安裝新版本 Docker。
有不同版本的 Docker 可供選擇,并且有多種方式可以安裝 Docker。
無論是 Docker CE 還是 Docker EE,都有不止一種安裝方式。例如,Docker CE 可以通過 apt 或者 deb 包管理方式進(jìn)行安裝,也可以使用 Docker 官網(wǎng)上的腳本。
接下來的命令會(huì)使用get.docker.com的腳本完成最新版本 Docker CE 的安裝和配置。
$ wget -qO- https://get.docker.com/ | sh
⒋ 將 Docker 配置為開機(jī)自啟動(dòng)。
$ systemctl enable docker
Synchronizing state of docker.service...
Executing /lib/systemd/systemd-sysv-install enable docker
$ systemctl is-enabled docker
enabled
此時(shí)讀者可能想重啟自己的節(jié)點(diǎn)。這樣可以確保剛安裝的 Docker 不會(huì)對(duì)系統(tǒng)開機(jī)有任何的影響。
⒌ 檢查并確保每一個(gè)容器和服務(wù)都已經(jīng)重啟成功。
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS
97e599aca9f5 alpine "sleep 1d" 14 minutes ago Up 1 minute
$ docker service ls
ID NAME MODE REPLICAS IMAGE
ibyotlt1ehjy prod-equus1 replicated 1/1 alpine:latest
注意,更新 Docker 還有其他的方法。這里只是介紹了基于 Ubuntu Linux 16.04 版本的方式。
接下來介紹一下如何在 Windows 上將 Docker 1.12.2 版本升級(jí)到最新版本的 Docker EE。
假設(shè)已經(jīng)完成了全部的準(zhǔn)備工作,比如為容器配置了正確的重啟策略,如果運(yùn)行有 Swarm 服務(wù),則需要將待升級(jí) Swarm 節(jié)點(diǎn)設(shè)置為 drain 狀態(tài)。
下面用到的全部命令都應(yīng)當(dāng)通過 PowerShell 終端執(zhí)行。
⒈ 檢查當(dāng)前 Docker 版本。
> docker version
Client:
Version: 1.12.2-cs2-ws-beta
Server:
Version: 1.12.2-cs2-ws-beta
⒉ 卸載本機(jī)上可能存在的由微軟公司提供的舊版本 Docker,并從 Docker 官方獲取最新版本進(jìn)行安裝。
> Uninstall-Module DockerMsftProvider -Force
> Install-Module DockerProvider -Force
⒊ 更新 Docker 包。
下面的命令會(huì)強(qiáng)制更新(無須卸載操作)Docker,并設(shè)置為開機(jī)自啟動(dòng)。
> Install-Package -Name docker -ProviderName DockerProvider -Update -Force
Name Version Source Summary
---- ------- ------ -------
Docker 17.06.2-ee-6 Docker Docker for Windows Server 2016
⒋ 檢查并確保每一個(gè)容器和服務(wù)都已經(jīng)重啟成功。