Docker 1.10:新的Compose文件、安全性增強、網絡功能以及更多
我們懷著興奮之情向大家介紹Docker 1.10,其中滿載著大量各位朋友一直期待的全新功能特性。
現在我們已經能夠更輕松地利用Docker Compose定義并運行復雜的分布式應用。Compose所帶來的強大容器編排能力如今已經可用于網絡及分卷的設置。在大家的開發設備當中,各位可以將多個網絡層以及復雜的存儲配置添加到應用設置當中,從而保證其與生產環境下的設置完全相符。接下來,大家可以將同樣的配置從開發環境中提取出來,并用于持續集成、分段乃至貫穿整個生產流程中的應用運行。
與往常一樣,我們在此次新版本中添加了一系列安全更新。大家長久以來強烈要求的諸多功能特性如此也一一成為現實:用于隔離系統用戶的用戶命名空間機制、用于過濾系統調用的seccomp配置文件以及一套用于限定Engine功能訪問的授權插件系統。
另一大安全強化機制在于鏡像ID如今能夠體現對應鏡像之內的內容,其作用方式類似于Git提交中的提交內容表示。這意味著大家可以通過指定鏡像的ID確保自己正在運行的內容與預期切實相符。
網絡功能更上一層樓
我們曾在上套Docker Engine版本當中添加了一套新的網絡系統。其允許大家創建虛擬網絡并向其中添加容器,從而創建出最適合應用程序實際需要的網絡拓撲結構。除了在Compose中添加網絡支持能力外,我們還實現了以下幾項朋友們一直盼望的新功能:
- 在網絡環境內使用鏈接: 鏈接仍然與以往一樣能夠在默認橋接網絡內起效,但大家原先無法在網絡中使用自己創建的鏈接。現在我們添加了對應的支持功能,意味著大家可以定義不同容器間的關系,并能夠在特定容器之內將某主機名設定為別名。 (例如--link db:production_postgres)
- 全網容器別名: 鏈接機制允許大家將某主機名以別名方式分配給特定容器,但大家現在也可以在完整的網絡環境內保證單一容器能夠通過多個主機名進行訪問。
- 內部網絡: 將--internal標記傳遞至network create以限制網絡中的出入流量。
- 自定義IP地址: 在容器運行或者被添加到網絡當中時,大家現在可以為其分配一個自定義IP地址。
- 域名解析DNS服務器: 主機名查找通過DNS服務器而非/etc/hosts完成,從而進一步提升其可靠性與可擴展能力。
- 在全部受支持Engine內核版本之上構建多主機網絡: 多主機疊加驅動程序如今可在較早內核版本(3.10及以上版本)中正常起效。
Engine 1.10
除了新的安全與網絡功能,我們還為Engine添加了其它一系列新特性:
- 內容可尋址鏡像ID: 現在鏡像ID如今能夠體現對應鏡像之內的內容,其作用方式類似于Git提交中的提交內容表示。這意味著大家可以通過指定鏡像的ID確保自己正在運行的內容與預期切實相符。這項改進源自Docker 1.6版本中的鏡像摘要機制。
- 事件流得到改進: docker events命令與事件API端點都已經迎來改進及簡化。各事件現在始終配合一種資源類型進行結構構建,而其執行指向該對應資源。另外,事件還加入了針對存儲分卷與網絡的操作選項。
- push/pull性能與可靠性得到改進: 各層如今以并發方式進行推送,意味著其推送速度得到顯著提高(約為原先的三倍)。另外,提取的速度與可靠性亦有一定程度提升——這主要利益于經過簡化的協議以及更出色的重試與回退機制。
- 實時更新容器資源管理: 在設定容器能夠使用的資源類型時(例如內存使用量),大家過去必須重新啟動容器以實現相關變更。現在我們已經能夠通過新的docker update命令在運行過程中對資源管理進行更新。
- 守護程序配置文件: 現在我們能夠利用單一文件內容更改與部分重載的方式配置守護程序選項,而不必再對其進行重啟——舉例來說,大家可以在無需重啟的前提下實現新守護程序標簽設定與調試日志記錄功能啟用。
- 臨時文件系統: 現在我們已經能夠輕松通過為docker run添加--tmpfs標記以創建臨時性文件系統。這項能力非常實用,特別是在容器內的某些軟件需要能夠寫入磁盤上的特定位置、而當前root文件系統卻處于只讀狀態的情況下。
- 磁盤I/O限定: 多種磁盤I/O限定設置選項已經添加完成,具體包括docker run:--device-read-bps, --device-write-bps, --device-read-iops, --device-write-iops以及--blkio-weight-device.
- Splunk日志記錄驅動程序: 用于直接將容器日志發送至Splunk日志記錄服務。
- 在重啟守護程序時以正確順序啟動鏈入容器: 這不是什么大事,但只要一經嘗試,大家就會發現其實現難度其實遠超想象。如果我們重啟一項包含有鏈入容器的守護程序,那么其有時候會由于鏈入容器尚未開始運行而出現啟動失敗。Engine現在將嘗試以正確順序啟動這些容器,從而保證整個流程順利完成。
此次新版本中還棄用了一些固有功能,包括停止對Fedora 21以及Ubuntu 15.04的支持能力,所以請一定提前檢查以確認這些調整是否會對您造成影響。另外,如果大家編寫了一套存儲分卷插件,也請檢查此次經過變更的分卷插件API以了解相關變動。
這里要感謝參與這一新版本開發的技術人員——特別是Qiang Huang、Denis Gladkikh、Dima Stopel以及Liron Levin。
另外,嘗試將Docker方案引入開發流程的最簡便方式就是安裝Docker Toolbox——大家可以點擊此處進行獲取。
Swarm 1.1
Docker Swarm是Docker的一套原生集群方案。其能夠顯著降低Engine集群的管理與部署難度。Swarm同時也扮演著Docker通用控制面板(Docker Universal Control Plane,這是一款用于實現Docker應用程序及集群部署與管理的內部工具)集群化與調度基礎的角色。
早在去年11月,我們就已經公布了Swarm的首個生產就緒版本,即1.0版本。此次發布的新版本包含一系列增量式改進,特別是添加了多項大家期待已久的功能特性:
- 節點故障情況下的容器重新調度:一旦某一節點發生故障,Swarm現在能夠選擇性地嘗試將負載調度至正常運行節點當中,從而保證其繼續運行。這還是一項實驗性功能,因此目前其實際效果還不夠完美,但能夠做出嘗試仍然令人頗感欣慰。
- 更出色的節點管理能力: 如果Swarm無法連接至某節點,其現在將進行重試而非直接放棄。另外,其還會在docker info當中顯示相關狀態與各類錯誤信息,幫助管理人員輕松完成調試。
同時敬請關注2月29號周一召開的Swarm Week系列活動!
如果大家還只是Swarm新手或者希望了解更多深層知識,那么Swarm Week將成為各位將相關信息一網打盡的絕佳平臺。我們將每天設定一個主題并展開深入探討。
因此請牢牢鎖定Docker博客,共同迎接#SwarmWeek于29號周一全面來臨!
Machine 0.6
Machine可謂Docker Toolbox當中的核心組成部分,而此次Machine 0.6版本的主要訴求則在于盡可能提高其與VirtualBox之間的兼容能力以及在Windows平臺上的運行可靠性。相信這會顯著提高Toolbox的使用體驗。
此次還專門針對Machine高級用戶推出了一系列新功能:
- 不必再輸入“default”: 現在即使我們不指定名稱,各命令將直接作用于“default(默認)”虛擬機對象。
- 新的配置命令: 當主機發生故障或者配置出現偏差時,這條命令能夠有效對相關主機進行重新配置。
Registry 2.3
在Registry 2.3當中,我們在性能表現與安全性層面做出了諸多改進。其目前支持新的manifest格式,同時使得各層能夠在不同鏡像之間實現共享,另外Registry當中的現有各層亦同時迎來性能提升。
原文鏈接: Docker 1.10: New Compose file, improved security, networking and much more!
來自: http://dockone.io/article/1009