Riddler助力Docker容器爲runC運行環境做準備

  這篇文章由www.mingpaixinxi.com名牌信息網轉載:這是一個關於標準化帶來的優勢的故事,同時介紹如何利用Riddler轉換一個Docker容器爲runC鏡像。Riddler由容器開發者Jess Frazelle研發。

  Phil Estes 是IBM開放雲技術的高級技術經理,他將在本週多倫多的LinuxCon會議上介紹Riddler的性能。

  運行,運行,運行!

  回顧開放容器,runC是一個開源引擎和規範運行容器,它遵守OCI的規範,包括Docker在內。runC的思想配合遠景規劃,是爲任何供應商控制或雲棧提供一個免費開源容器。它是基於Docker的LibContainer,作爲與操作系統交互的接口。它是Docker公司自己的核心容器引擎。

  runC可以運行Docker的鏡像。它依賴兩個組成部分。一個是一組配置指令。這些命令行標誌通常追加在Docker運行命令後面;而runC從config.json配置文件中讀取配置信息。可以手工創建一個,或者runC將自動創建一個。

  RunC還需要根文件系統,使它可以操作容器。用戶可以手動創建一個目錄,作爲容器的根文件系統或者文件系統可以利用docker export命令從容器中導出。

  埃斯蒂斯說:"通過上述兩塊內容,runC可以執行一個容器。”

  爲什麼呢?

  很多場景下,操作runC可能是比操作全功能的容器(如Docker)更合適,埃斯蒂斯解釋說。

  它可以提供容器移植到新環境的基礎——比如Solaris Zones,或者用於創建新OCI引擎或平臺兼容的容器。例如,英特爾的Clear Containers和Hyper.sh均是基於runC實現。

  RunC在嘗試新功能,如檢查點恢復。Docker的seccomp是在Docker1.10中引入的。

  Estes說:“RunC就是那種可以在高層開發這種能力的工具。”

  開發者同樣可以發現runC的便利,它提供一個簡潔明瞭的接口便於快速迭代文件系統和配置中的變更。於是,他還說“我從不擔心存儲或者後端問題。”

  進入Riddler

  雖然runC可以創建容器配置(“runc spec > config.json”),但是該文件只有基本配置,通常需要再加入各種環境變量。如何讓Docker自動獲取這些信息呢?

  Riddler讓用戶可以僅通過運行一個容器就可以爲容器創建一個全信息配置文件,同時讓Riddler從Docker引擎中畫出必要的細節內容。Ridder準確的創建出剛運行的容器的配置文件。Estes介紹說:“是否有掛載的卷、是否採用只讀文件系統、是否採用了命名空間,這些信息均會被複制到runC的配置文件中”。

  Riddler同樣會增加一些默認配置。例如,seccomp配置是根據Docker的多種假設,例如不允許系統調用。它同樣獲取docker run命令附加的參數。在Estes的例子中,他運行了date命令來演示這些參數也會被複制。

  其他特性必須手工設定。網絡並不是OCI管理,於是這些設定必須手工輸入。Riddler提供hook到netns,它使得用戶可以調整網絡配置。用戶還需要爲容器創建文件系統。對於這部分,Estes創建了一個腳本用於匹配Riddler獲取的用戶網絡命名空間信息。

  在這些步驟之後,“我們擁有了一個非常類似簡單Docker運行的環境。”

  點擊觀看視頻。

  (視頻時長5:25,建議在wifi環境下觀看)

  解釋

  作爲如何使用該工具的例子,Estes描述瞭如何用NGINX複製一個新運行的容器。他採用-d標誌來啓動軟件到後臺模式。他還運行了一個容器啓動Lynx文本瀏覽器。

  在這個場景下,對開發者來說runC可以簡化很多事情。開發者可以容易的修改運行中容器的配置。容器可以訪問開發者目錄中的其他文件夾。

  Estes說:“在開發模式,簡便在工作中非常有用”。

  runC同樣提供了與Linux Capabilities相互協作,它有一系列的系統調用或者資源操作與超級管理員權限。例如Docker,它有一系列的Linux Capabilities設置。通過這些配置,runC提供一系列的設定,便於開發者修改。

  例如,CAP_NET_RAW設定控制用戶執行低級別TCP函數的能力,包括使用ping命令執行Internet Control Message Protocol (ICMP)。快速演示表明,開始時ping確實可以工作,之後Estes做出了改變,它就不再工作了。同樣,CAP_SYS_ADMIN可以修改爲允許或者不允許用戶讀取和配置宿主機名等功能。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章