自己學Docker:10.Docker.v1.12升級到v1.13.0 正式版
Docker v1.13.0 正式版釋出了。
重要資訊:在 Docker 1.13 中,與在 Docker 1.12 中引入的實驗版本相比,管理外掛 api 發生了變化.在升級到
Docker 1.13 之前,必須解除安裝使用 Docker 1.12 安裝的外掛。可通過 docker plugin rm 命令解除安裝外掛.
如果已經升級到 Docker 1.13 而不解除安裝先前安裝的外掛,則當 Docker 守護程式啟動時,可能會看到此訊息.
Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv
要手動刪除所有外掛並解決此問題,請執行以下步驟:
- 從 /var/lib/docker/plugins/ 中刪除 plugins.json
- 重新啟動 Docker,驗證 Docker 守護程式啟動時是否有錯誤
- 重新安裝外掛
Docker 1.13 有一千四百多個 issue/pull request,五千多個 commits,是 Docker 歷史上最高的釋出版本,這並不是一個簡單的小版本變化,裡面有大量的更新.具體的內容可以檢視更新說明.
Top 10 新增功能 | New Features
- 正式支援服務棧: docker stack
- 正式支援外掛:docker plugin
- 新增在 Swarm 叢集環境下對密碼、金鑰管理的 secret 管理服務:docker secret
- 增加 docker system 命令
- 可以直接使用 docker-compose.yml 進行服務部署
- 新增 docker service 滾動升級出故障後回滾的功能
- 增加強制再發布選項 docker service update –force
- 允許 docker service create 對映宿主埠,而不是邊界負載均衡網路埠
- 允許 docker run 連入指定的 swarm mode 的 overlay 網路
- 解決中國 GFW 牆掉 docker-engine apt/yum源的問題
升級到v1.13.0
解除安裝舊版本
首先需要解除安裝到已有的版本.
sudo apt-get purge docker.io
解除安裝過程中會提示/etc/docker目錄非空,這個目錄下有一些我之前使用docker相關的檔案,可以選擇手動刪除.
sudo rm -rf /etc/docker/
執行完成後使用如下命令解除安裝相關依賴.
sudo apt-get autoremove
更新 apt 源
Docker 預設 APT 倉庫中的版本較低,因此要設定 APT 使用 Docker 的官方源,更新包資訊,確保 APT 能使用 https 的方式,並安裝 CA 證書.
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
新增 GPG 金鑰:
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
新增源:
在檔案 /etc/apt/sources.list.d/docker.list 中新增相應的源。
對應的源有:
$ echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
對於 Ubuntu 14.04, 15.10, 16.04,推薦安裝 linux-image-extra-* 核心包。這些包能允許我們使用 aufs 儲存驅動。
$ sudo apt-get update && sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
確保 APT 現在是從設定的倉庫中下載 Docker 的.
$ apt-cache policy docker-engine
安裝
上面的處理好了後,安裝時需要注意的是,docker的名稱發生了變化.v1.12的版本叫docker.io,新版本改為docker-engine.
sudo apt-get install docker-engine
執行完成後,檢視版本號就會發現已經是最新版v.1.13.0了
sudo docker --version
驗證安裝,
sudo docker run hello-world
該命令會下載一個測試映像然後開啟一個容器執行。當容器執行後,會輸出一段訊息然後退出.
檢視 docker 守護程序的狀態:
sudo systemctl status docker
至此,docker升級就完成了.
新增功能解讀
Docker 映象構建
- 從已有映象取得快取
- 壓扁 (squash) 映象(實驗階段)
- 構建映象時支援用 –network 指定網路
- 開始允許 docker build 中定義 Dockerfile 未使用的引數(ARG)
安裝
- 解決 GFW 影響 Docker 安裝問題
- 增加更多的系統支援
網路
- 允許 docker run 連入指定的 swarm mode 的網路
- 允許 docker service create 對映宿主埠,而不是邊界負載均衡網路埠
- iptables 的轉發規則將預設拒絕
- 在 docker network inspect 裡顯示連入的節點
- 允許 service VIP 可以被 ping
外掛
- 外掛功能正式啟用
命令列
- checkpoint 功能(試驗功能)
- docker stats 終於可以顯示容器名了
- 給 docker ps 增加 is-task 過濾器
- docker inspect 將可以檢視任何 docker 物件
執行時
- 不在分別構建試驗可執行檔案,直接使用 –experimental 引數
- 在 overlay2 儲存驅動使用於 xfs 時可以新增磁碟配額
- 增加 docker system 命令
- 提升 overlay2 的優先順序
- docker exec -t 自動新增 TERM 環境變數
- Windows 內建的執行 Windows 程式的 Docker on Windows 的改進
Swarm Mode
- 正式支援 docker stack
- 新增 secret 管理
- 新增負載均衡和DNS記錄對新增的健康檢查的支援
- 新增滾動升級回滾的功能
- 補充了一些 docker service create 所缺失的引數
- 新增命令 docker service logs 以檢視服務日誌(試驗功能)
- 增加強制再發布選項 docker service update –force