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