1. 程式人生 > >自己學Docker:10.Docker.v1.12升級到v1.13.0 正式版

自己學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

要手動刪除所有外掛並解決此問題,請執行以下步驟:

  1. 從 /var/lib/docker/plugins/ 中刪除 plugins.json
  2. 重新啟動 Docker,驗證 Docker 守護程式啟動時是否有錯誤
  3. 重新安裝外掛

Docker 1.13 有一千四百多個 issue/pull request,五千多個 commits,是 Docker 歷史上最高的釋出版本,這並不是一個簡單的小版本變化,裡面有大量的更新.具體的內容可以檢視更新說明.

Top 10 新增功能 | New Features

  1. 正式支援服務棧: docker stack
  2. 正式支援外掛:docker plugin
  3. 新增在 Swarm 叢集環境下對密碼、金鑰管理的 secret 管理服務:docker secret
  4. 增加 docker system 命令
  5. 可以直接使用 docker-compose.yml 進行服務部署
  6. 新增 docker service 滾動升級出故障後回滾的功能
  7. 增加強制再發布選項 docker service update –force
  8. 允許 docker service create 對映宿主埠,而不是邊界負載均衡網路埠
  9. 允許 docker run 連入指定的 swarm mode 的 overlay 網路
  10. 解決中國 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