天天看點

Docker 員工自述:Docker 為什麼輸給了Kubernetes?

Docker 如今的體量與當初的潛在願景相比實在太過渺小,本文将帶你了解 Docker“落得如此田地”的原因和真相的細節。

一、前言

Docker 還活着。盡管它近兩三年的境況并不理想,但它還在苦苦掙紮,試圖找到自己的商業價值。就在上周,Docker 宣布更改 Docker 軟體的許可條款。在不久的将來,為大企業工作的 Docker Desktop 專業使用者需要付費訂閱才能繼續使用。

與此同時,Docker 還推出了一項專門針對企業的新訂閱計劃,即 Docker Business。新條款于 8 月 31 日生效,但 Docker 給出了截至 2022 年 1 月 31 日的寬限期,以便開發人員遵守新服務協定并在有需要的時候購買付費訂閱。

不出所料,Docker 的舉措引發了開發者的讨論。雖然許多人表示了解 Docker 新訂閱背後的考慮,但也表達了他們的不滿。批評主要分兩類,有些人認為 Docker 的決定開創了有潛在“危險”的先例,未來它可能會增加訂閱成本。不過,其他人表示,這種觀點并沒有考慮到團隊如果不得不依賴“維護不善”的開源軟體時,會産生更高的成本。

另一方面,人們最擔心的是企業内部采購流程的難度,這可能會“勸退”開發者繼續使用 Docker,自然而然地,不少人開始探索替代方案,包括 Minikube、Canonical 的 MicroK8s 等。

至于開發者和企業會不會覺得 Docker Desktop 的替代方案更友善,又或者選擇支付訂閱計劃所需的少量費用進而保持現有工作流程不變,還有待觀察。

Docker 的商業嘗試無可厚非,但更遺憾的是,Docker 從未成功将技術創新轉化為可持續的商業模式,還被迫在 2019 年 11 月将企業業務出售給 Mirantis。

今天,廣受歡迎的開源編排工具 Kubernetes 已經取代了 Docker 為自己設計的利潤核心 Swarm 企業容器編排工具。于是,Docker 苦心經營多年的利潤還是“泡了湯”,之後隻能半死不活地掙紮求存。但是,真實的故事要比這複雜得多。近日,外媒 InfoWorld 采訪了數位前任及現任 Docker 員工、開源貢獻者、客戶及行業分析師,試圖從這個分崩離析的故事中找尋真相。

二、“每件事都隻能淺嘗辄止”

嚴重依賴巨額風險投資、競争格局不斷變化加上各大雲巨頭都想分一杯羹,Docker 這家年輕企業面臨的壓力實際遠遠超過大多數人的想象。

Docker 從 2014 年左右開始認真考慮将自身的容器市場領先地位轉化為可變現商業戰略。2014 年與 2015 年,該公司分别用一部分風險投資收購了 Koality 與 Tutum,同時也推出了 Docker 企業支援計劃的首個疊代版本。

這些投資後來催生出了 Docker Hub 等産品——大家可以把它了解成是 Docker 鏡像的 GitHub(目前仍然存在)——最終又成就了 Docker Enterprise。但這些産品一直沒能真正受到企業客戶的認可,他們通常樂于同更成熟的合作夥伴攜手,或者是自主建構而非直接采購解決方案。是以 Docker 隻能繼續努力開發客戶真正想要的産品組合。

Docker 創始人 Solomon Hykes(于 2018 年 3 月宣布從 Docker 離職)在接受采訪時指出,“我們一直拿不出優秀的商業産品,原因是我們始終無法集中注意力。我們對每件事都隻能淺嘗辄止。單是維持開發者社群的增長并建構一款偉大的商業産品就已經夠難了,當時我們還需要同時開發三到四款。很遺憾,我們在這方面投入了大量精力和金錢,但沒能在任何一條道路上走到終點。”

事後來看,Hykes 認為 Docker 不應該急于開發産品,而最好能更多傾聽客戶的意見。Hykes 感歎道,“我本來沒必要急着擴大商業産品的規模,反倒該用更多資金從社群中收集洞察見解,并建立起一支了解需求、有能力解決需求的團隊。我們在 2014 年曾經面對轉折點,但我們覺得自己等不及了,是以在急切當中做出了決定。實際上并沒那麼急。”

也有人認為 Docker 過早把好東西免費釋出了出來。今年年初,谷歌的 Kelsey Hightower 在采訪中表示,“他們相當于是免費推出了自己最有份量的王牌。他們已經解決了問題,而且是全面解決:設計鏡像、建構鏡像、存儲鏡像、運作鏡像。之後還剩什麼?沒有空間了呀。”

Hykes 并不同意這樣的觀點。“我認為這說法不對。一般來講,核心開源産品先要創造巨大的增長,之後才能找到可行的商業化機會。很多企業都成功實作了 Docker 的商業化,隻是 Docker 自己沒有。Docker 中的很多東西都可以成功商業化,隻是 Docker 自己沒做成。”

例如,Red Hat 與 Pivotal(現屬于 VMware)都是 Docker 的早期合作夥伴。他們将 Docker 容器內建至自己的商業 PaaS 産品(分别是 OpenSHift 與 Cloud Foundry)當中,并為開源項目做出了貢獻。

如今回憶起來,Hykes 還覺得他混淆了“社群與生态系統”這兩個概念。Red Hat 根本“不是社群中的一部分,他們也從來不真正在乎 Docker 到底能不能成功。我們錯誤地希望讓 Red Hat 成為社群中的一部分。回想起來,這樣的夥伴關系永遠不可能給 Docker 帶來助益。”

是以,旅遊科技企業 Amadeus 等早期客戶從 2015 年起轉向 Red Hat,借此填補 Docker 留下的企業應用空白。其雲平台負責人 Edouard Hubin 表示,“我們直接從先驅使用者轉型為 Red Hat 的主要合作夥伴。我們在這種模式下使用 Docker 開源版本,并由 Red Hat 為我們提供容器技術支援。容器化是颠覆虛拟化的重大技術變革的第一步,而真正改變了企業遊戲規則的是容器編排解決方案。很明顯,Docker 沒能壓制住 Kubernetes,最終被迫陷入極為困難的局面。”

Docker 公司前 CEO(2013 年至 2017 年)Ben Golub 則表示,“正所謂「神仙打架、凡人遭殃」。我們都知道,這場風暴的中心其實并不在于 Docker,而是各大雲服務商之間的慘烈搏殺。他們都想把 Docker 拉向自己的方向,而選擇忠于我們最初設立的價值觀與業務根基簡直像是在鋼絲上跳舞。”

這位前任 CEO 指出,随着 Docker 的不斷發展,這一切因素都自然而然造成一種“緊張”的氛圍。Golub 回憶道,“我們希望建立起偉大的社群并通過開發者産品獲利,同時還希望打造一款出色的營運商産品,幫助客戶大規模建構并部署容器。雖然願景在此,但我們很快意識到自身必須迅速擴大規模,而且拿不出太多時間來平衡社群發展與商業企業轉型這兩條路線……作為一家初創企業,我們每天在匆忙中做出上百個決定,之後就是祈禱自己能少犯點錯。”

推薦一個 Spring Boot 基礎教程及實戰示例:

https://www.javastack.cn/categories/Spring-Boot/

三、與 Kubernetes 談不攏的合作:自負與傲慢

縱觀整個發展曆程,Docker 做出了很多令其追悔莫及的決定,但其中最嚴重的一個當數拒絕接受 Kubernetes 作為首選新興容器編排工具。面對這位新朋友,Docker 擺出了敵對的架勢、一意孤行地推進自己的專有 Docker Swarm 編排工具。

事實上,Docker 公司在 2014 年本來有機會與谷歌 Kubernetes 團隊開展密切合作,并在過程當中把控整個容器生态系統。

Docker 最早一批員工、也是效力時間最長的 Jérôme Petazzoni 表示,“我們最大的錯誤就是錯過了 Kubernetes。當時我們正處于集體心态膨脹的狀态,我們認為 Kubernetes 太複雜了,Swarm 一定能獲得成功。這種錯誤判斷也最終讓我們陷入了集體失敗。”

據多位親曆者證明,雙方在谷歌舊金山辦公室内展開的緊張讨論中包含衆多技術細節,兩邊對于容器編排的具體實作方法也都有着明确而強烈的己見。

Kubernetes 聯合創始人、現任 VMware 公司副總裁 Craig McLuckie 表示,他曾提出将 Kubernetes 捐贈給 Docker,但雙方未能達成協定。他在采訪中提到,“兩邊确實有點互相看不起的意思。我們從 Docker 那邊感受不到任何開發經驗,感覺上這群年輕的暴發戶根本不了解分布式系統的管理秘訣。”其他在場人士也提到讨論氛圍并不正式,當時的主要訴求就是尋找聯合開發的可能性。但無論如何,兩邊團隊未能達成任何統一的意見,于是最終分道揚镳。谷歌則在 2014 年的夏季推出了 Kubernetes。

Hykes 也承認,當時 Docker 與谷歌團隊之間的關系非常緊張。“有那麼一刻,我們的自負占據了上風。谷歌擁有很多既聰明又富有經驗的人才,但 Docker 這位局外人卻被勝利沖昏了頭腦。我們沒在谷歌工作過、也沒上過斯坦福大學、更沒有計算機科學博士學位。有些人不想讓對方來瞎摻和,于是這就成了一場自我之戰、「反智」之戰。最終,Docker 與 Kubernetes 團隊之間充滿意義的合作就這樣胎死腹中了。”

Docker 公司最早的一批員工、前業務發展與技術聯盟副總裁 Nick Stinemates 表示,“我們本可以讓 Kubernetes 成為 GitHub 之上頭頂 Docker 名号的一流 Docker 項目。事後看來,Swarm 的上市時間太晚,最終引發了無法挽回的失敗。”

“一方面是我們太過自負,另一方面則在于 Kubernetes 幾位聯合創始人 Joe Beda、Brendan Burns 以及 Craig McLuckie 的尖銳态度——他們對于服務層級 API 的需求有着毫不讓步的堅持,但 Docker 在技術上卻并不太關注單一 API。是以我們雙方根本無法達成一緻。”Stinemates 說道。

無論如何,Kubernetes 最終赢得了容器編排之戰。

但 Craig McLuckie 也強調,他“不知道 Kubernetes 會發展到今天這個程度。事後分析太容易了,但人在局中時确實沒辦法看得那麼清楚。”

四、高層的裂隙

在 2015 年以 10 億美元的“獨角獸”估值完成 9500 萬美元的巨額 D 輪融資之後,Docker 終于走到了炒作周期的頂峰。

Stinemates 表示,“這輪融資給 Docker 設下了極高的發展期望,也暴露出我們這家企業即将面臨的一系列根本難題。我認為當時擔任公司 CEO 的 Ben Golub 有很多想法跟 Hykes 不同,而且大家都知道兩個人出現了意見分歧。董事會大量參與、努力安撫創始人的情緒,同時也給了 CEO 足夠的回旋餘地,希望推動公司走向成功。如果由 Hykes 決定,那麼他會堅持以社群為導向的路線創造病毒式傳播。而在 Ben 看來,越早轉向商業營運就越能掌握主動權。這種緊張的局勢,導緻我們在兩條路上都沒能走到底。”

這種态勢最終催生出兩個 Docker:面向開發人員、廣受歡迎的指令行工具兼開源項目 Docker 社群版,以及面向希望大規模采用容器的企業客戶的商業工具套件 Docker 企業版。遺憾的是,公司的行動太慢了,沒辦法把二者明确拆分開來并分别提供發展資源。

到 2018 年,裂隙開始顯現。Docker 公司逐漸無法在日益不滿的開源社群及強大的合作夥伴,與要求在生産環境中運作容器的苛刻企業客戶之間找到可行的路線。

不久之後的 2018 年 3 月,Hykes 離開了自己一手創立的公司。他在一篇博文中寫道,“作為創始人,我當然有着複雜的情緒。任何一位創業者都希望自己的公司能夠在自己離去時仍能獲得成功。我的這一天也終于到來,沒想到是以這樣苦樂參半的方式。對創始人來說,放棄一生追逐的夢想确實是種煎熬。”

如今回望過去,Hykes 倒是超脫了出來。“我意識到自己并不屬于這家公司,繼續留下也沒有什麼建設性貢獻,是以我離開了……我已經失去了創業的樂趣,是以要麼留下當個 CEO、要麼直接告别更好。”

面對日益嚴重的資金問題,Docker 公司輪換了新的 CEO——Ben Golub 于 2017 年 5 月讓位于給前 SAP CEO Steve Singh;2019 年 6 月,前 Hortonworks CEO Rob Bearden 又從 Singh 手中接過權柄。

五、現在 Docker 的定位是什麼

在初始投資者 Insight Venture Partners 與 Benchmark Capital 3500 萬美元的現金支撐之下,如今 Docker 的“殘軀”正在七年資深人士 Scott Johnston 的上司下,由 Docker Engine 容器運作時、Docker Hub 鏡像庫以及 Docker Desktop 軟體苦撐着。

Johnston 在采訪中表示,自己正努力“像雷射般聚焦開發者的實際需求”,希望以此幫助 Docker 公司回歸本源。“我們認為 Docker 公司比以往任何時候都更強大,憑借的是三個核心:以客戶為中心、統一的上市規劃與更具生态系統友好度的商業模式。”

Johnston 決心不再重蹈過往的覆轍,專注為企業内的核心軟體開發者閱聽人提供價值。

Johnston 認為,“Docker 2.0”的增長機會在于為安全、經過驗證的鏡像提供新的開發者工具與可信内容,同時為以容器技術為基礎的新興計算模型(例如無伺服器、機器學習及物聯網工作負載)持續提供推動力。

更重要的是,Docker 仍然是行業标準的容器運作時,目前 Docker Desktop 擁有 300 萬的可觀裝機量。此外,在 Stack Overflow 的《2021 年開發者調查》報告中,49% 的受訪者表示自己經常使用 Docker Desktop 工具。

盡管如此,人們對 Docker 的未來仍然不太看好。Stinemates 坦言,“直白一點的話,我會質疑如今的 Docker 還算不算真的存在。從職業角度來看,這真的很可悲。我再也沒遇到過能像 Docker 那樣令人興奮、充滿活力而且時刻創造出火花的企業。”

Hykes 則總結道,“公平地說,Docker 沒能把自己的業務潛力轉化成實際價值……至少目前還沒有。但我很高興 Docker 在經曆了這麼多年的坎坷之後再次抓住了建立業務的機會。這證明了 Docker 項目的品牌和底子都很厚實。”