為什么Docker != Containers,Docker OSS != Docker Inc.

jopen 8年前發布 | 13K 次閱讀 Docker

去年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設施”。

或者放在下幅圖里理解(圖中架構有所簡化):

為什么Docker != Containers,Docker OSS != Docker Inc.

無需干擾用戶的前端體驗,就可以為合適的工作選擇正確的后臺支撐(可以使用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 != Containers,Docker OSS != Docker Inc.

Docker收購Unikernel Systems的事實應該喚醒大家這方面的意識,這對整個業界有深遠的教育意義。

當然這也會給一些人帶來困擾:

為什么Docker != Containers,Docker OSS != Docker Inc.

我認為這是好事,因為給了大家選擇最適合自己使用場景的后臺的權利。但是,不管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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!