1. 程式人生 > >全面解讀Moby和LinuxKit,Docker稱溝通不善招致誤解

全面解讀Moby和LinuxKit,Docker稱溝通不善招致誤解

圈的一股怒火

這段時間,開源圈子有一股怒火: Docker公司發表宣告稱會將原有的Docker開源專案停掉,另起爐灶開了Moby專案。

這份宣告居然正面反饋(280票)遠低於負面反饋(1198票),好評率居然僅有18.9%。大家紛紛譴責“Docker直接把原Docker專案改名成Moby,開源突然商業化”的行為。

Moby

而另一方面,Docker公司又在解釋:Moby並不是Docker的替代品,它的本意是希望幫助系統工程師使用Moby這個工具集去構建類似於Docker的平臺。(Moby is not a replacement for Docker: it’s a framework to help system engineers build platforms like Docker out of many components.)

Docker的CTO Solomon Hykes稱此舉是為了更好地打造並豐富開放容器生態,並不是走向封閉;圈內的誤解都是公司溝通不善的鍋。

Docker表示很無辜

不是走向封閉,而是更開放

一位michaelfavia網友表示Docker專案的今天是社群努力的共同結果;同時,他所在的公司目前重度使用Docker專案,轉變技術棧為時已晚。雖然從Docker的商業利益角度而言,這無可厚非;但是他不贊同這種做法。

Solomon Hykes則回覆到其實專案並沒有走向閉源,所有過去開源的會繼續開源,甚至會有更多的開源出來。事實上,如果某家公司業務是基於此,Moby的變化反而是好事;Docker公司會更多地致力場景的定製化。

Docker

Moby的定位

Solomon表示Moby專案是產品鏈路中的一環,從上游到下游的專案依次為:上游元件(containerd,linuxkit等)-> Moby -> Docker CE -> Docker EE

Moby

短期內, Docker CE和EE的使用者不會受到影響

隨後一位frekele的網友表示感謝後續的解釋,但是希望可以讀到docker to moby的指導指南,這樣大家在下一個釋出版本之前可以更清楚地瞭解發生了什麼,會有哪些影響。Solomon Hykes表示短期內Docker CE和EE的使用者不會受到影響,下一個二進位制發行版本不會發生變化。Moby會有自己的釋出流程,會在後續討論。

求證:Moby專案究竟意欲何為?

那麼不如,擺事實講道理,看看究竟是怎樣一回事。

Docker宣告1:Moby並不是Docker的替代品。

Moby專案是將引擎拆分為更多開放元件,對我們用於組裝Docker產品的各新型工具與元件進行開源並供技術社群使用。

事實:

•    分解Docker工作已經進行一段時間了,比如已經完成的runC和containerd。其中containerd已經捐獻給了CNCF。

CNCF

•    Moby專案居然是從2013年1月13日就開始了。

Moby

結論:

DIY式工具集——Docker公司將原來大家熟知的Docker開源專案的拆分成不同模組,然後形成一個“樂高式”的容器化工具集。Moby並不完全等同於原來的Docker專案,Docker公司不是強取豪奪,它確實還付出了一番努力的。

Docker宣告2:本意是希望幫助系統工程師使用Moby這個工具集去構建類似於Docker的平臺。

事實:

Moby專案包含三大元素:

  • 一款用於對系統進行組裝、實驗與測試的工具鏈框架;
  • 一套包含約80種容器化元件的庫(適用平臺包括裸機,如x86與ARM; Linux、Mac與Windows可執行檔案; 面向各主流雲及虛擬化供應商產品的虛擬機器映象);
  • 以及一份“參考藍圖”,即提供細節資訊以幫助使用者瞭解如何利用眾多元件片段組合系統方案。

其中部分元件片段可同時用於容器化應用堆疊以及Linux發行版——例如Redis或Nginx。其中亦包括Docker公司過去幾個月間向開源社群貢獻的部分成果,包括containerd及LinuxKit。

還有一個事情注意的是,除了Moby專案之外,Docker還同期釋出了另外一個新專案LinuxKit。LinuxKit可以對多款工具進行繫結以構架定製化Linux子系統。此前由Docker公司與晶片合作伙伴ARM、HPE等多家基礎設施供應商以及微軟與IBM等雲廠商協作開發。作為成果,LinuxKit作為開源專案由Linux基金會負責管理,同時遵循其開放治理實踐。

LinuxKit中執行軟體的唯一方式即為使用容器。(這或將意味著系統的攻擊面將大幅減小,使用者可更輕鬆地根據安全需求對任意軟體進行更換)關於LinuxKit,後面還會有更詳細的討論。

結論:

以往Docker公司對Linux強依賴,但是現在Docker決定利用容器元素組成新的Linux發行版。誠如Docker公司市場營銷與技術社群高階副總裁David Messina所說表示目標受眾為“要求以Linux作為產品執行基礎”。

Docker宣告3:受Fedora專案啟發定義一整套開放、以社群為中心的治理政策(Fedora專案在平衡社群需求與主要企業贊助商要求之間獲得了巨大成功)。

事實:

Moby專案的設計原則包括:

  • 內建元件並允許替換:Moby中包含大量元件選項以構建全功能容器系統,但其模組化架構亦可確保大部分元件可通過其它不同實現方案進行替換。
  • 實用性與安全性齊備:Moby專案提供安全預設選項,且不會對實用性產生負面影響。
  • 以容器為核心:Moby專案利用容器構建,且用於執行容器。
    • Moby專案利用containerd作為預設容器執行時。
    • Moby專案中的全部元件皆以容器形式存在,因此新元件的建立難度等同於構建新的OCI相容型容器。

結論:

DIY式社群——利用Moby專案可以構建分散式應用程式中的元件,不論是配置檔案還是底層核心。Docker公司希望憑藉Moby專案降低內部的重複工作量,而此專案在理論上也允許其他使用者達成同樣的效果。 同時,建立Moby專案的另一大潛在動機,或許是藉此利用來自Docker或者其它貢獻方的元件片段建立起各類可用例項。

Docker公司明確指出開發者共享的任何程式碼皆不屬於貢獻——意味著開發者仍對相關成果保留全部控制權。Docker在其官方宣告《Moby and Docker》中宣告,Docker現在是,將來也會是開源的產品,可供容器build,ship,run。Moby專案之後,使用者使用上沒有任何差異,使用者們可以從docker.com網站下載Docker。(其官方宣告的詞彙搭配是Docker Product和Moby Project。)

經過上面的介紹,想必大家對Moby都已經有所瞭解了。那麼LinuxKit呢?

還有一個LinuxKit:DIY式工具集

LinuxKit是用來構建安全、可移植、精益的專門為容器服務的作業系統的工具集。

作為Docker公司長久以來用於建立Docker Desktop與Cloud的內部方案,LinuxKit利用容器作為基礎構建塊以組合定製化Linux發行版。其擁有極為苗條的身材——最小體積僅為35 MB,且確保全部系統守護程式皆以容器化方式存在。其系統元件與所發 布之軟體皆以容器形式進行交付。

Docker公司指出,該專案的目標受眾為“要求以Linux作為產品執行基礎”的開發者。Docker公司市場營銷與技術社群高階副總裁David Messina在電話採訪中亦確認了這一定位。

LinuxKit的一大適用用例型別源自物聯網。由於物聯網平臺要求所使用之Linux擁有小巧且安全的特性,因此其它Linux供應商皆據此推出了類似的專案,包括Canonical的Ubuntu Core以及Suse的JeOS。

Docker公司首席開發者佈道師Patrick Chanezon援引了多家大型工業企業的例項,其曾嘗試構建基於Linux的物聯網解決方案,但卻因現有技術選項的弊端而遭遇失敗。他認為LinuxKit的出現有可能給此類場景帶來福音。

不過Chanezon與Messina亦同時指出,LinuxKit除適用於高階工業用例之外,亦能夠吸引來自Gentoo、Linux From Scratch或者Slackware的高水平個人使用者——即幫助其推出定製化發行版並將其部署在特定硬體裝置之上。Messina表示,“LinuxKit非常靈活且可供技術愛好者加以嘗試。”

在DockerCon 2017大會上,微軟公司Azure架構師John Gossman講解了一項以Azure為基礎平臺的LinuxKit用例。Hyper-V隔離通常僅適用於Windows容器,但如今其已經獲得了支援Linux容器的能力。使用者可以自行選擇Linux核心,而LinuxKit將作為其中一種可用選項。

Moby + LinuxKit的組合拳

LinuxKit負責提供用於建立容器類Linux發行版的各類工具,而Moby專案則可幫助使用者整合Docker釋出至技術社群的各容器元素。

Moby專案之於容器生態系統,正如LinuxKit之於Linux發行版。

這兩個專案的核心在於利用可互換的容器元件打造各類新型系統,Docker公司希望提供一種構建定製化容器系統的新途徑。

LinuxKit

Docker公司Partick Chanezon稱:Linux只是Docker的一個元件。所以Docker公司的願景是想打造橫跨Linux,Windows,iOS及至嵌入式等系統平臺的大生態體系。

國外和國內有哪些聲音?

GitHub、HackerNews、知乎論壇上廣大網友們的正面聲音並不多,除了一位紳士喵的網友認為更名完全不會造成麻煩,並相信Docker程式碼依然是完全開源並且會一直存在下去。

有趣的是,實名接受採訪的一些業界專家大多數表示了對Docker此番舉措的認同。

在外媒中的採訪中,Pund-IT公司首席分析師Charles King指出:這一新型協作模式將帶來更為方便快捷的部署途徑。兩個專案的核心目標在於簡化容器環境部署與支援工作中的各大關鍵性流程。

Scality公司CTO Giorgio Regni表示“這亦意味著我們能夠利用同樣的工具以統一化方式構建自有虛擬機器映象、裸機映象以及公有云映象。”

愛奇藝技術總監餘珂稱他倒是希望Docker能夠商業化成功,這樣對社群是好事。否則類比Openstack,沒有公司盈利的支撐,社群運營也會比較艱難。

京東基礎平臺部技術總監鮑永成表示:京東在容器技術具有定製開發經驗和積累。京東目前執行的Docker版本是經過自己定製,對於Docker更改名稱和專案,對京東沒有影響。

阿里雲資深專家易立認為更名是為了限制Docker名稱的使用範圍,Docker作為Docker公司的註冊商標,只能被用於Docker的產品(比如社群版、企業版、Docker Hub、Docker Store等)。Docker此舉對終端使用者沒有影響,或將影響到開發者和廠商。但是其實Moby專案是將控制權交給社群,並且最終有益於整個容器生態圈的發展。

Docker

Pivotal大中國區雲端計算首席架構師周暉同樣表達了觀點:

Moby是Docker公司在繼推出Docker商業版之後的又一個重要的商業舉措,就是把Docker的開源部分比如原始碼剝離到Moby專案,而Docker則作為純商業化平臺。有些Docker粉絲頗有微詞,因為之前對Docker的關注是基於開源,現在Docker不算開源部分,那些給Docker做生日蛋糕的下次要改成給Moby了。

對Docker公司而言,我倒是覺得這次剝離有利於Docker的商業和開源的發展,沒有商業成功的開源很難走的很遠,如果Docker一直不能盈利導致Docker公司運營艱難,很難想象Docker會繼續發展。

對於客戶而言,如何做選擇會有更多的依據:第一是繼續用Moby開源自己定製,第二是選擇商業版的Docker,第三是選擇Moby創業公司(之前大家習慣稱為Docker創業公司)的定製版。

Moby的剝離對曾經的Moby生態圈創業公司而言又是一次打擊,因為Moby創業公司不能再混淆概念了,不能再自稱是Docker中國區代理之類的,其次,圍繞著Moby的創業區域越來越小了,因為Docker在Moby上增加的商業功能越來越多,如果繼續和Docker功能重疊,那客戶做的選擇就簡單,與其用Moby創業公司的定製Docker,遠不如用原生的商業Docker。

不過……

不過,Moby專案有不適用人群:

•    對於希望尋求便捷方式在容器中執行應用程式的應用開發者,建議使用Docker CE。

•    對於希望尋求可直接使用的商用支援型容器平臺的企業IT與開發團隊,建議您使用Docker EE。

•    對於希望瞭解容器技術並尋求簡單學習方法的朋友,推薦docker.com網站。

Docker公司走過了怎樣的路?

一步一步,構建生態之心。

第一階段 :(2013年-2014年)開源容器技術早期階段

先驅者們開始率先使用容器技術,並通過開原始碼庫、Docker以及其它相關專案進行協作以推動相關工具發展成熟。

第二階段:(2015年-2016年)進入雲原生程式的生產環境

在這一階段,使用者社群開始成長並立足數百個生態系統專案與成千上萬貢獻者支援其大規模部署活動。與此同時,Docker亦將其基本生產模式轉變為基於開放元件的形式,旨在增加創新能力並進一步拓展合作範疇。

提取Docker程式碼庫中的元件並進行快速創新,以幫助系統開發商在構建自有容器系統時對其進行單獨複用,具體包括:runc、HyperKit、VPNKIt、SwarmKit、InfraKit以及containerd等等。

第三階段:2017年 構建容器生態

Docker認為容器化將成為市場主流,並逐步擴充套件至各類計算環境當中——包括伺服器、資料中心、雲端計算、桌面、物聯網乃至移動端。各個行業與垂直市場、金融、醫療衛生、政府、旅行以及製造業亦參與其中。同樣的,包括現代Web應用、傳統伺服器應用、機器學習、工業控制系統以及機器人等層面亦成為其具體用例形式。作為一大共性,剛剛加入容器生態系統的參與者往往會建立與特定基礎設施、行業或者用例相適配的專用系統。

Docker會利用開源體系作為產品的創新實驗環境,並與整個生態系統開展密切合作。目前,Docker公司稱針對Mac、Windows桌面、Windows Server以及AWS、Azure和Google Cloud Platform等釋出了十餘種特定Docker版本。

Docker公司稱為了能夠在短期內通過小型團隊以可擴充套件的方式有效複用既有開發成果,非常需要一種新的方法開發各種專用型版本。Docker團隊不僅需要有能力組合各類元件,同時亦應借鑑汽車行業的運營思路,即在不同車型(或者說版本)當中複用同樣的元件。

第四階段:未來在路上

Docker認為將容器生態系統推向下一個發展階段以實現容器主流化的最佳途徑,在於立足生態系統層面實現通力協作。

正是基於此,Docker公司正式公佈Moby專案——全新開源專案,提供數十款“樂高”形式的元件,使用者可將其組裝至基於容器的定製化系統框架當中,並立足於此進行實驗並與其他容器技術參與者交流思路。Docker公司解釋稱不妨將Moby專案視為容器系統版本的“樂高俱樂部”。

Moby專案專為系統構建者(而非主要使用Docker或者其它容器平臺的應用程式開發者)設計,旨在幫助其打造自有基於容器技術的系統。Moby專案的參與者可以從Docker提供的元件庫中選擇自己需要的選項,亦可通過“自帶元件(簡稱BYOC)”機制利用更多其它元件建立與眾不同的定製化容器系統。

Docker將Moby專案作為開放性研發實驗室,供各位生態系統參與者立足未來容器技術發展構思進行實驗、新元件開發以及協作。全部開源協作成果還將逐步被引入Moby專案之內。Docker公司稱其誠摯邀請社群人士加入以推動軟體容器主流化運動,並共同將生態系統與使用者群體規模擴充套件至更高層次。

更名是因為Docker已經成為了註冊商標;將專案模組化是為了更易用。

Docker一定知道社群的重要性,其目標也是建立更大的容器生態;同時,它也希望更多的行業應用場景,不然不會佈局為物聯網做準備。

面對投資人壓力,Docker公司在戴著腳銬跳舞;也許後來,它會成為下一個RedHat。

參考文章

https://thenewstack.io/docker-seeds-two-new-projects-building-containerized-infrastructure/

http://www.infoworld.com/article/3190611/open-source-tools/docker-debuts-containerized-construction-kit-for-building-linux-distros.html

http://www.linuxinsider.com/story/84474.html

https://yq.aliyun.com/articles/74440

https://yq.aliyun.com/articles/74437

附文:Moby專案的官方宣告

Moby專案——面向容器生態系統以建立組合式容器系統的協作專案

Moby是Docker公司開發的全新開源專案,旨在進一步推動軟體容器化運動的前進步伐。其以“樂高式”思路提供數十款元件選項,配合一款能夠將各元件組合為定製化容器系統的框架,同時亦可作為容器技術參與者們實驗靈感並交流思路的協作平臺。

Moby專案概述

Moby專案的核心是一套用於組裝定製化容器系統的框架,其具體特性包括:

  • 一套涵蓋各類容器系統組成元素的容器化元件庫,具體包括作業系統、容器執行時、編排、基礎設施管理、網路、儲存、安全、構建以及映象釋出等等。
  • 將各元件組裝為面向多種平臺及架構之可執行元素的工具,適用平臺包括裸機(x86與ARM); Linux、Mac與Windows可執行檔案; 面向各主流雲及虛擬化供應商產品的虛擬機器映象。
  • 一組參考組合方案,可用於直接使用、修改或者啟發您建立自己的容器系統。

Moby專案中的全部元件皆以容器形式存在,因此新元件的建立難度等同於構建新的OCI相容型容器。

設計原則

Moby為基於明確原則指導的開放專案,但同時亦擁有模組化、高度靈活性且無硬性使用方式規定等優勢,因此容器技術社群可充分參與併為其設定下一步發展方向。Moby專案的設計原則包括:

  • 內建元件並允許替換:Moby中包含大量元件選項以構建全功能容器系統,但其模組化架構亦可確保大部分元件可通過其它不同實現方案進行替換。
  • 實用性與安全性齊備:Moby專案提供安全預設選項,且不會對實用性產生負面影響。
  • 以容器為核心:Moby專案利用容器構建,且用於執行容器。

利用Moby專案,您將能夠描述分散式應用程式中的全部元件——包括高階配置檔案到底層核心——並利用其輕鬆構建並部署應用成果。

Moby專案利用containerd作為預設容器執行時。

受眾

Moby專案適用於任何希望利用現有或定製化元件組裝容器系統的使用者,具體包括:

  • 希望對其Docker構建方案進行定製或者調整的技術愛好者
  • 負責構建容器系統的系統工程師或者整合商
  • 希望將現有容器系統與其實際環境進行適配的基礎設施供應商
  • 希望體驗最新容器技術的容器技術愛好者
  • 希望立足多種不同系統測試其專案的開源開發人員
  • 任何希望瞭解Docker內部架構及構建方式的朋友

Moby專案不推薦以下使用者使用:

  • 對於希望尋求便捷方式在容器中執行應用程式的應用開發者,我們建議您使用Docker      CE。
  • 對於希望尋求可直接使用的商用支援型容器平臺的企業IT與開發團隊,我們建議您使用Docker EE。
  • 對於希望瞭解容器技術並尋求簡單學習方法的朋友,我們向您推薦docker.com網站。

過渡至Moby專案

Docker公司正在將全部開源協作成果逐步引入Moby專案。在這一過渡期間,全部開源貢獻活動皆可照常進行。

以下為具體變更說明:

  • 將引擎拆分為更多開放元件
  • 移除docker UI及SDK等,並將其轉入Docker內部進行保留
  • 強調此專案不僅限於此引擎,亦適用於Docker平臺之上各獨立元件的組合
  • 對我們用於組裝Docker產品的各新型工具與元件進行開源並供技術社群使用
  • 受Fedora專案啟發定義一整套開放、以社群為中心的治理政策(Fedora專案在平衡社群需求與主要企業贊助商要求之間獲得了巨大成功)

文章來自微信公眾號:高效開發運維