上週的DockerCon上,Docker官方公開了Moby項目——將Docker組件化成一系列程序集。DockerCon上有一個簡單的demo,用moby工具將各類組件組裝到定製的Linux操做系統鏡像中。這看上去很酷,但同時也讓不少人困惑。同時,關於Moby的熱議和爭論也從未中止過。安全
本文的做者是Rancher Labs的首席架構師兼聯合創始人Darren Shepherd,同時也是Docker的maintainer。咱們想提供一些關於Moby項目的背景和解釋,以及它將如何影響Rancher、RancherOS和咱們的用戶。架構
其實早在幾個月前,關於Moby項目的討論就已經在Docker Project maintainer之間展開了,這一切都是因爲Docker既是一個產品、又是一個項目的雙重性質。這個雙重性在一開始是給Docker(既是指Docker項目,也是指Docker公司)帶來了很多好處的。可是最終,Docker公司必然要走到這個決定的路口,決定他們的產品到底應該是什麼樣,未來到底是什麼走向。做爲Docker maintainer的咱們,認爲產品和項目確實應該分開。工具
Docker公司的最終目標,是在過往工做的基礎上,進一步將Docker組件化。 Docker的組件化並非什麼新鮮議題了,這項工做已經進行了很長時間,從runc和containerd開始,長期以來它一直是Docker項目的目標。多虧一千個貢獻者和maintainer,到目前爲止,Docker還是一套組織良好的library和package。組件化
Moby項目將Docker項目轉變成了徹底組件化的架構,併爲絕大多數的Docker代碼、而非產品自己提供了新的歸屬。 Moby讓咱們這些社區成員得以之前所未有的方式爲容器技術的創新和發展做出更多貢獻。現在,咱們能夠從技術角度來處理一些很是有效的用例,不過這與之前的Docker產品有衝突。而舉例來講,RancherOS就是這麼一個用例。操作系統
那麼,Moby對Rancher、RancherOS和咱們的用戶會產生什麼影響呢?答案是,大多數用戶不會看到任何改變:Docker仍是Docker。它將繼續是您所瞭解和喜好的Docker(而且有可能會有更好的內部架構)。產品
在RancherOS裏你會看到什麼改變?RancherOS是一個高度專業的容器應用,它是一個全部組件都是容器的操做系統。要使RancherOS成爲可能,咱們在Docker中須要一些真正的low-level的knob。而即便這有可能不利於Docker UX,Docker仍爲咱們提供了許多這樣的knob。好比說,--uts = host:我猜99%的Docker用戶都不知道這個標記是什麼,可是RancherOS須要它,有了它,DHCP才能夠動態地傳播主機名的更改。社區
從長遠來看,Moby項目是將給RancherOS帶來積極幫助的。咱們能夠繼續保持相同的Docker用戶界面,可是經過Moby,咱們能夠訪問全部咱們須要的low-level的Linux knob。最後,用戶將擁有的會是一個更輕量、更快、更安全的RancherOS。 Moby項目對於Rancher而言也是很是好的:Rancher旨在管理Docker容器,在未來,咱們還能夠管理從Moby Project組裝的定製Linux組件。容器
Moby引起的熱議仍未停息,業界也有不少質疑和不滿的聲音。而咱們只想關注更積極的一面,和Docker用戶、Rancher用戶及容器生態系統中的全部人一塊兒,繼續爲開源、爲容器的發展做出貢獻。基礎