為什么Docker != Containers,Docker OSS != Docker Inc.
去年VMware啟動了一個稱為 Bonneville 的項目,之后演進為 vSphere Integrated Containers 。
最近我調動到VMware Cloud Native Application Business Unit(VMware 云原生應用程序業務部門),Bonneville和VIC是我的日常工作內容。
如果你懶得閱讀上面給出的博客鏈接,那么簡單來說,vSphere Integrated Containers是一種技術,允許用戶預配VM的同時保留Docker的體驗(API/CLI,鏡像格式,公開的registry,等等)。這么做的好處是,簡單來說,有利于開發人員(他們“需要Docker”),并且有利于IT(因為大多數IT部門都具備圍繞VM的標準化運營能力)。
這樣的理念不容易理解,因為業界存在一個流行的基本誤解:Docker = 容器。
這是必須改變的觀念。
進入“unikernels”。
從這里開始,本篇博客的所有內容都僅僅是我的個人觀點,和我的公司無關(僅僅提醒一下)。
幾天前,Unikernel Systems發表聲明,他們會加入Docker(Inc.)。 這里 有談論這一事件的簡短視頻。
視頻里有一些有意思的點。
其中,“能夠使用相同的Docker工具,該工具在開發人員中應用廣泛,將快速加速unikernels的使用”,這個說法很重要,大家需要在理解Docker !=容器的基礎之上加以理解。
可以進一步將這句話改為(在Bonneville的上下文里):“能夠使用相同的Docker工具,該工具在開發人員中應用廣泛,將允許用戶利用傳統的IT已經標準化了的VM設施”。
或者放在下幅圖里理解(圖中架構有所簡化):

無需干擾用戶的前端體驗,就可以為合適的工作選擇正確的后臺支撐(可以使用Unikernel,容器或者VM)。
這個想法非常強大。
上圖還需要注意,VM并不代表是在VM之上運行OS,然后運行容器。也就是說,我們討論的不是在純物理機OS上初始化容器還是在VM里的OS上初始化。
上圖展示的是由Docker初始化的VM(這正是 vSphere Integrated Container 技術所實現的。)
如果你想更進一步,我建議大家看一下 Ben Corrie去年在QCon上有關Bonneville的演講 。非常值得花50分鐘看一下這段視頻。
現在回到Unikernels。
博客圈里已經有好幾篇文章深入探討 unikernel為什么不適合生產環境 (這些文章需要辯證地對待,取決于你問的是誰,你可能也聽說過VM不適合生產環境;不確定這些對于容器的判斷是否公正)。
還有幾次相關主題的在線討論,其中一次是Hacker News的 超長討論 。
大量評論中真正吸引我注意力的是Solomon Hykes(Docker的創辦者和CTO)所說的:
“計算機一次只運行一個unikernel。只不過有時候它們是虛擬機。記住虛擬化越來越趨向硬件輔助,這里的軟件部分是成熟的。因此大多數情況下應該將這些擔憂隔離開,假定VM只是一種特殊類型的計算機。
在hypervisor不夠安全的其他用例下,可以轉而使用物理機。
我得承認我并不是100%確定他在這里想表達的意思。有時候大家都使用的指代IT堆棧里的某個東西的術語會變化,從而造成混亂。如果你也覺得我們這里還處在初級階段,方案還有些混亂...那么你的整體感覺是對的。
我從這段話里學到的是Docker意圖提供解決方案。可以是純物理機上的容器,VM上的容器,hypervisor上的Unikernel,等等。
我認為VIC(我喜歡用hypervisor上的“containerVM”來指代VIC)是Solomon暗示的另一種解決方案。
因此未來很可能的替代解決方案的更為詳細的架構圖類似:
Docker收購Unikernel Systems的事實應該喚醒大家這方面的意識,這對整個業界有深遠的教育意義。
當然這也會給一些人帶來困擾:
我認為這是好事,因為給了大家選擇最適合自己使用場景的后臺的權利。但是,不管Docker是否收購,unikernel都會繼續存在。也就是說,用戶可以選擇unikernel并且一直使用它。
我身體里的陰暗小人建議我們應該透過Docker Inc.的視角來看待這一切,它是Docker OSS(Open Source Software)項目背后的商業公司。
Docker Inc.渴望位于“堆棧的頂層”。這樣他們會是“大家看到并且與之交互的接口”,這會讓其處在十分有利的地位。
他們嘗試確定“控制點”。這本身不是什么壞主意,這是所有商業公司都希望達到的保持差異化的方式。
我從來沒有看到哪一家商業公司的策略是停留在堆棧的最底層,等待由其上能夠輕松使用的技術上幫助其實現商業價值。這個領域有很成熟的業界實踐和模式。
現在假象一下如果Docker不去收購Unikernels Systems會怎么樣。
如果unikernels在未來成功了,我們就會看到兩種獨立并且平行的堆棧(一個Docker/容器堆棧,和一個unikernel堆棧),很可能有不同的接口。
這時會出現一個第三方(比如,Kubernetes),屏蔽掉后臺運行時及其接口,提供部署到這兩種堆棧的單一入口點。那么,結果是,商業化Docker(Docker OSS項目和Docker Inc.商業實體)。
Joe說堆棧中位置越高價值越大,這是對的,但是我認為,在嘗試并且使用它時,需要確定正確并且穩固的控制點。
到這里,希望Docker != 容器這個觀點應該更加清楚了,還有個大家未來需要熟悉的另一個核心概念。
這個核心概念是: Docker OSS != Docker Inc.
這樣的摩擦已經發生在一些公司和項目之間,比如,Kubernetes,Mesos和Docker(Inc.)。他們(還有其他很多)都在為成為這樣的“入口點”而“激烈競爭”。
事實上,當所有人都在使用Docker(OSS)標準化時,Docker Inc.只是嘗試圍繞Docker構建業務模型的眾多公司中的一個。
Docker Inc.有(明顯)優勢,但是大家得記住Docker OSS != Docker Inc.
總之,我想要澄清我并不是想妖魔化Docker Inc.
他們是一家偉大的公司,我非常喜歡它的理念,并且它正在做所有商業公司(包括我就職的公司)都會做的事情:產生利潤。
原文鏈接: Why Docker != Containers and Docker OSS != Docker Inc. (翻譯:崔婧雯 校對:)
===========================
譯者介紹
崔婧雯,現就職于IBM,高級軟件工程師,負責IBM WebSphere業務流程管理軟件的系統測試工作。曾就職于VMware從事桌面虛擬化產品的質量保證工作。對虛擬化,中間件技術,業務流程管理有濃厚的興趣。
來自: http://dockone.io/article/995