天天看點

Docker 1.10版本釋出

Docker Compose對于網絡和卷的支援

最新版本的Docker Compose向後相容老的檔案格式,為了遷移到Docker Compose的Version 2檔案格式,在頂部增加了<code>version:’2’</code> 這一行,将所有已存在的服務定義移動到新的<code>service:</code>分段中,并且可選擇性地為網絡和卷建立<code>volumn:</code>和<code>network:</code>分段。

通過這些新增加的特性,使用者可以在<code>docker-compose.yml</code>檔案中定義更加複雜的網絡和存儲設定,在這些環境中開發應用程式,隻需要使用Docker Compose和Docker Swarm就可以在持續內建、測試和最終的生産環境中采用相同的設定,這是非常神奇的!

在<code>docker-compose.yml</code>檔案中一個小而美的語義上的改進就是使用者可以為一個容器定義<code>鏡像</code>名字和<code>建構</code>目錄,并且儲存一段時間,如果已經存在了,那麼就不需要每次都重建了。

網絡相關的甜點

在Docker 1.10版本中添加了更多與網絡相關的特性,如下所示:

* 内部網絡,可以用來建立限制内外流量的網絡

* 容器可以配置設定自定義的IP位址

* 容器間的連接配接可以使用各種類型的網絡,不僅僅是預設的橋接網絡

* 預設使用内嵌的DNS服務,代替了早期使用的基于<code>/etc/host</code>檔案的解決方案,因為DNS的擴充性更好。

Docker 1.10的新的安全特性

作為Docker 1.10發行版的一部分,幾個關鍵的安全改進也被添加了進來。Seccomp模闆(Linux系統調用過濾)、内容可尋址的鏡像ID和User Namespace是最其中重要的幾點。

Docker中的User Namespace

在User Namespace引入到Docker之前,容器中的Root使用者與主控端系統的Root使用者具有相同的UID,其它容器可能也是如此,這顯然是一個安全問題。借助于User Namespace,容器提供了UID和GID的映射,這就允許容器中的程序認為自己以UID 0運作(通常是Root使用者),而實際上它們是以UID 1234、42或者其它的一些UID運作的,這意味着這些程序從容器的角度而言具有Root通路權限,但是從主控端系統角度而言不具備這個權限的。

黑客将會經曆更加艱難的破解時間(也許是更加有趣)來再次打破容器的安全限制。

目前UID和GID的映射是在Docker守護程序級别指定的(使用flag <code>—userns-remap</code>),然而,未來我們可以期望努力實作在每個容器上允許有不同的映射集,這樣就可以在一個Docker主機上實作安全的多租戶了。

Docker中的安全計算模式

安全計算模式或者簡寫為seccomp是Linux核心的沙盒機制,出現自2.6.12核心版本,是以這不是一個新概念。

Seccomp本質上允許使用者過濾有效程序的系統調用,它可以顯著降低攻擊面,隻使能應用程式/程序實際需要使用其功能的那些系統調用。你的每個PHP應用平均需要通路300個以上的有效系統調用嗎?也許不用。

内容可尋址的IDs

每一個Docker鏡像代表一個鏡像層的堆棧,這些鏡像層是鏡像檔案系統的快照,存在于對最初的Dockerfile檔案<code>docker build</code>過程中的每一步指令執行之後,這些鏡像層,要麼是從Docker Registry拉取的,要麼是本地建構的,都是隻讀的對象,在它們的頂層增加一個讀寫層就建立了一個容器。

在過去版本的Docker中,鏡像層(以及容器)是通過一個随機的UUID來識别的,從Docker 1.10版本開始,鏡像層是通過一個内容的哈希來識别的,這使得在對鏡像拉取、推送、載入和儲存之後的完整性校驗更加容易和透明,因為沒有兩個不同的鏡像層意外地具有相同的ID,反之亦然。

由早期版本的Docke建構的現有鏡像不得不遷移,當更新到Docker 1.10版本後,Docker守護程序會自動将同一主機上的所有鏡像作遷移,如果有很多鏡像需要做哈希的話,這會持續幾分鐘。如果你不想等待那樣長的時間,有一個離線遷移的腳本。

注意:在Docker 1.10中容器ID仍然是随機的UUID。

更多的更新

這一版本中還有更多的甜點。添加了指令<code>docker update</code>,該指令允許更新已運作容器的資源限制,在更改資源限制配置檔案之後,不需要重新開機Docker守護程序。資源限制用于磁盤的I/O,下載下傳/更新管理器也被重構允許更快的鏡像拉取和并行推送等等。

總結

Docker 1.10是一個非凡的發行版。一周前我已經遷移所有的主機到了新版本,沒有遇到任何問題(就像我上次更新到1.9後)。我鼓勵每個人都考慮更新。

原文釋出時間為: 2016-02-27

本文作者:國會山上的貓TuxHu 

本文來自雲栖社群合作夥伴DockerOne,了解相關資訊可以關注DockerOne。

原文标題:Docker 1.10版本釋出

繼續閱讀