Docker 1.9 發布:Swarm 和跨主機網絡進入 production-ready 階段
編者按:Docker 1.9今天正式發布,Docker Swarm 和多跨主機網絡進入 production-ready 階段,Docker Engine 提供了全新的存儲卷管理系統,Docker Compose 對更多環境提供了更好的支持。所有的這些都為大規模部署生產環境下的分布式應用打下了堅實的基礎。本文由靈雀云高級軟件工程師劉夢馨編譯,以下為譯文:
容器化的思潮正在改變基礎設施的構建,你需要用最好的工具來完成這個目標。通過 Docker Swarm 你可以將整個集群當做一個資源池來對待去運行分布式應用,但是所有這些組成應用的容器你還需要一些額外的管理。例如有些需要相互之間進行通信,有的需要數據卷進行存儲。總的來說真正讓容器在集群中運行管理起來是件十分復雜的事情。
好消息是我們已經幫你解決了這些問題。Docker Network 允許你基于多個主機創建一個虛擬網絡,這樣容器間就可以跨網絡進行通信。Docker 中最新的存儲卷管理系統可以讓容器在任何機器上都能持久化數據存儲。在此之上你可以用 Compose 來操縱這一切。
跨主機網絡
Networking 在六月份的 DockerCon 上宣布作為實驗版本的一部分現在正式進入穩定版分支,并且已經 production ready。
Networking 允許你基于多個主機創建一個虛擬網絡,這樣容器間就可以跨網絡進行通信。容器不管在哪里都可以添加到這個虛擬網絡中,虛擬網絡中提供了完整的網絡拓撲控制,你可以控制哪些容器之間可以進行通信。除此之外你也可以利用其它插件來進行網絡控制,使得你無須修改之前的應用。
網絡方面更詳細的內容可以參考 http://blog.docker.com/2015/11 ... ng-ga ,我們也會針對 networking 舉辦一次線上的 meetup,你將會從負責這塊的工程師那里獲得更多信息。
release not 網絡那里最后新增了一條
將容器 NetworkSettings API v1.21 中的 EndpointID, Gateway, GlobalIPv6Address, GlobalIPv6PrefixLen, IPAddress, IPPrefixLen, IPv6Gateway 和 MacAddress 標記為 DEPRECATE。這些現在為 bridge 網絡的特定配置。可以通過 NetworkSettings.Networks 來查看每個容器網絡的網絡配置
持久化存儲
你們一遍又一遍的向我們吐槽 Docker 持久化存儲在分布式系統的難用, Docker 1.8 加入了存儲卷插件可以用任何第三方存儲系統來備份存儲卷,
我們現在做的又要好了一點。Docker 1.9 包含一個重新設計的完整存儲卷管理系統使得你可以更加容易的從前端來管理這些插件。而且它已經和 Swarm 集成,你可以在整個集群中管理你的存儲卷。
下面是一個和 Flocker 插件集成的示例:
$ docker volume create -d flocker --name=myvolume
$ docker run -v myvolume:/data busybox sh -c "echo hello > /data/file.txt"
$ docker run -v myvolume:/data busybox sh -c "cat /data/file.txt"
現在還支持 Blockbridge, Ceph, ClusterHQ, EMC 和 Portworx 插件,更多相關信息可以參考存儲卷文檔和存儲卷插件文檔。
Docker Swarm 1.0
Docker Swarm 是 Docker 原生的集群管理系統。在本版本中我們進行了大量的測試,修復了 Bug 并進行了很大程度的優化。隨著網絡和存儲卷管理在這個版本的發布,我們終于可以說 Swarm 已經 production-ready。我們在 1000 個節點上測試了 30000 個容器,swarm 可以如絲般潤滑的運行。
Docker Engine 1.9
除了網絡和存儲卷管理之外,1.9 還提供了大量新特性:
- Dockerfile 的構建時參數 :現在可以在 Dockerfile 中傳入構建時參數來自定義該如何構建這個鏡像。例如你可能想設置構建時的 HTTP_PROXY,自定義依賴安裝的版本等等。
- 并行鏡像 pull :如果你 pull 的鏡像正在被其他進程 pull,進度條會顯示這個信息并正確退出。(不會卡死在煩人的“Layer already being pulled by another client”)
- 自定義 stop 信號 :Dockerfile 指令中新增 STOPSIGNAL 允許用戶自定義應用在收到 docker stop 所收到的信號。
- AWS CloudWatch logging driver : 如果你在 AWS 上運行 Docker,現在你可以將 Docker 的日志直接輸出到 CloudWatch 中。
- 磁盤 I/O metrics :docker stats 現在可以直接展示磁盤 I/O metrics
在發布日志中你可以獲得完整的更新列表,感謝所貢獻者尤其是 Madhav Puri 貢獻了構建時參數, Darren Shepard, Patrick Hemmer 和 Harald Albers 做了大量的測試和 review 使得這個版本能順利發布。
Docker Compose 1.5
Docker Compose 是一個定義并運行多容器應用的工具,我們來看一下它有那些更新:
- 支持 Windows : Compose 現在可以在安裝 Docker Toolbox 的機器上運行。這可以容你在 Mac 上進行開發,在 Windows 上運行,反之亦然。
- Compose 文件中的環境變量 :現在你可以在 Compose 文件中利用環境變量配置任何運行時參數。
- 對多環境更好的支持 : 你可以指定一個 base file 來描述應用的結構并重載這個文件這對開發、測試、生產環境做一些修改。可以參考 http://docs.docker.com/compose ... files 獲得更多信息。
- 和 networking 集成 :Docker 的新網絡功能已經發布,所以你可以利用 Compose 在 Swarm 中部署一個跨主機的應用。
- Compose file 校驗 :Compose 會對你的 Compose file 進行完整的校驗,并輸出更好的錯誤信息。
可以在發布日志中獲得更完整的更新列表。
Docker Toolbox
如果你想在 Mac 或者 Windows 上使用這些新特性,那么就要用到 Docker Toolbox 了。它包含了所有這些最新的特性,并且只需要一個安裝包就可以搞定。
他還包含了 Machine 0.5,一個在你的桌面機和云服務商那里創建 Docker Engine 的工具。Machine 現在提供了可插拔的插件,因此如果 Machine 不支持某個云服務商或者虛擬化服務商,而你又需要在他們之上運行 Docker,你可以編寫自己的驅動插件。
本版本還包含了一些列新的特性和 bug 修復,現在 Toolbox 已經提供下載了。
Docker Registry 2.2
下面是最新版本的特性更新:
- 支持 Google Cloud Storage :現在你可以在 Google 建立自己的 Registry 了。
- 只讀模式 :如果你需要對 Registry 進行維護或者做一些比較危險的操作任務,你可以將 Registry 設置為只讀魔術來阻止用戶 push 鏡像。
- 支持可配置主機名 :現在你可以為 Registry 配置一個外部可訪問的 URL。
- 基于文件的存在配置和可配置的 HTTP 健康檢查 :現在管理員可以通過在文件系統中增加一個文件來停用 Registry。并且 Registry 現在可以配置對其他服務的健康檢查,例如對 notification 接入點的 HTTP 健康檢查。
- 可配置的 HTTP 響應 headers :現在你可以對 Registry 的響應 header 進行配置,這可以更好的保證安全性,并根據你的環境進行自定義配置。
可以在發布日志中獲得完整的更新列表,今天就可以試用新版本的 Registry 了。
原文鏈接: Announcing Docker 1.9: Production-ready Swarm and Multi-host Networking