容器神話 Docker 是如何一分為二的
譯者點評:
最近聽了很多資深的人士關于開源,以及商業化的分析。開源與商業化,聽起來就是一對矛盾的所在,似乎大家都在嘗試做其二者的平衡。是先有開源,還是先有商業化?俗話說“談錢不傷感情”,近幾年背靠開源的創業公司如雨后春筍般涌現,即使是開發人員也是需要生活的。
容器神話 Docker 曾經無比風光,盛極一時。即使這樣一個備受矚目,大獲風投的熱捧的獨角獸也未能免俗,并付出了不小的代價。
今天這篇文章講述了 Docker 這家公司從誕生到巔峰到隕落,這一路上所做的抉擇,并最終斷腕做了開源與商業的分離,再一次從開源踏上找尋商業化之路。這些都是值得我們參考和思考的,不管是已經開源或者準備從事開源的。
這篇文章翻譯自 How Docker broke in half [1]
這家改變游戲規則的容器公司是其昔日的外衣。作為云時代最熱門的企業技術業務之一的它到底發生了什么?
Docker 并沒有發明容器 [2] ——將計算機代碼打包成緊湊單元的方法,可以輕松地從筆記本電腦移植到服務器——但它確實通過創建一套通用的開源工具和可重用的鏡像使其成為主流,這使所有開發人員只需構建一次軟件即可在任何地方運行。
Docker 使開發人員能夠輕松地將他們的代碼“容器化”并將其從一個系統移動到另一個系統,迅速將其確立為行業標準,顛覆了在虛擬機 (VM) 上部署應用程序的主要方式,并使 Docker 成為新一代最快被采用的企業技術之一。
今天,Docker 仍然活著,但它只是它可能成為的公司的一小部分,從未成功地將這種技術創新轉化為可持續的商業模式,最終導致其企業業務于 2019 年 11 月出售給 Mirantis [3] 。InfoWorld 采訪了十幾位前任和現任 Docker 員工、開源貢獻者、客戶和行業分析師,了解 Docker 如何分崩離析的故事。
Docker 誕生了
2008 年由 Solomon Hykes 在巴黎創立的 DotCloud,這個后來成為 Docker 的公司最初被設計為供開發人員輕松構建和發布他們的應用程序的 平臺即服務 (PaaS) [4] 。
在 2010 年夏天一起搬到硅谷 參加著名的 Y Combinator 計劃 [5] 之前,Hykes 很快就加入了他的朋友兼程序員同事 Sebastien Pahl。已經被拒絕一次的 Hykes 和 Pahl 重新申請,Pahl 的父親在他們面試前幾周把去舊金山的機票錢放在他們面前。唉,這對夫婦再次被拒絕,直到 YC 校友 James Lindenbaum,一家名為 Heroku 的競爭公司的創始人 [6] ,出面為他們擔保。
我們所知道的 Docker 于 2013 年 3 月在 PyCon 上由 Hykes 首次演示 [7] ,他解釋說開發人員一直要求訪問支持 DotCloud 平臺的底層技術。他在那次談話中說:“我們一直認為能夠說“是”會很酷,這是我們的底層部分,現在你可以和我們一起做 Linux 容器,做任何你想做的事,去構建你的平臺,這就是我們正在做的,”。
Docker 首席執行官 Ben Golub 2013 年至 2017 年之間,告訴 InfoWorld,“這聽起來很老套,但 Solomon 和我談論的是預發布,我們可以看到所有集裝箱船進入奧克蘭港,我們正在談論集裝箱在航運界的價值。事實上,從世界的一側運送汽車比將應用程序從一個服務器帶到另一個服務器更容易,這似乎是一個需要解決的問題。”
Docker 開源項目迅速崛起,吸引了成千上萬的用戶,與 微軟 [8] 、 AWS [9] 和 IBM [10] 等公司建立了備受矚目的合作伙伴關系,并獲得了 滿滿一車的風險投資 [11] ,包括 Benchmark 的 Peter Fenton 和 Trinity Ventures 的 Dan Scholnick 的早期投資。調整后的公司更名為 Docker,并從 Benchmark、Coatue Management、Goldman Sachs 和 Greylock Partners 等公司籌集了近 3 億美元。然而,與許多基于開源軟件的公司一樣,它很難找到一種可盈利的商業模式,而這些投資者從未得到他們的大筆回報。。
RedMonk 分析師 James Governor 說,“Solomon 建立了過去 20 年來最引人注目的技術之一,并且在將觀點打包并使其對大量開發人員非常有價值的業務中。Docker 是否做出了錯誤的決定?顯然是的,但風投都瘋了,他們向他們投入的錢意味著他們一定覺得他們可以做任何事情,這是有問題的。”
快進到 2021 年,這個故事的簡版是,備受歡迎的開源容器編排工具 Kubernetes [12] 通過取代其主要利潤來源:一個名為 Docker Swarm 的企業版容器編排工具,吃掉了 Docker(業務)的午餐. 然而,真實的故事要復雜得多。
開源商業化很難
巨額的風險投資、快速增長的競爭格局以及云行業巨頭都想分一杯羹的陰影,將這家年輕的公司帶入了一個猶如壓力鍋的運營環境。
“有一種說法是'大象打架,草被踐踏',我們很清楚這不僅是針對 Docker,還有云供應商的相互競爭。他們都想把我們拉向不同的方向。既要保持我們的價值觀和根基,又要建立一個企業,這個根本就是個困局”Golub 說。
這位前 CEO 指出,隨著 Docker 的發展,所有這些因素都造成了“自然的緊張關系”。Golub 說:“我們希望建立偉大的社區并通過開發者產品獲利,同時還希望建立一個偉大的運營商產品,讓客戶能夠大規模構建和部署容器。這就是我們的愿景,很快我們意識到我們必須迅速擴大規模,而且沒有太多時間來平衡社區和成為一家商業企業......在一家初創公司,你每天要做出 100 個決定,你希望 80 個是對的。”
2014 年左右,Docker 開始認真考慮將其在容器領域的領先地位貨幣化的商業戰略,當時該公司將部分風險投資資金用于 2014 年 Koality 的收購 [13] 和 2015 年的 Tutum 的收購 [14] ,同時還推出了自己的企業支持計劃的第一次迭代。
這些投資催生了像 Docker Hub 這樣的產品——你可以認為它有點像 Docker 鏡像的 GitHub( 現在也存在 [15] )—— 以及最終的 Docker 企業版。但這些產品都沒有真正受到企業客戶的歡迎,他們通常樂于與更成熟的合作伙伴合作,或者構建而不是購買解決方案,盡管 Docker 努力生產客戶真正想要的一系列產品。
今年夏天在法國度假時,Hykes 告訴 InfoWorld:“我們從未發布過出色的商業產品,原因是我們沒有集中注意力。我們試圖做每件事的一點點。維持開發者社區的增長并構建一個偉大的商業產品已經夠難的了,更不用說三四個了,而且基本不可能同時做到,但這就是我們試圖做的,我們花了大量的錢來做這些事。”
DockerDocker 業務發展和技術聯盟的前副總裁、最早的員工之一 Nick Stinemates 說:“在開源之外出現了零技術交付,根本無法交付商業軟件。”
事后看來,Hykes 認為 Docker 應該花更少的時間來運送產品,而應該花更多的時間傾聽客戶的意見。Hykes 說:“我本來不會急于擴大商業產品的規模,而是投入更多資金從我們的社區收集見解,并建立一個致力于了解他們的商業需求的團隊。我們在 2014 年有一個轉折點,當時我們覺得我們等不及了,但我認為我們等待的時間比我們意識到的要多。”
其他人認為 Docker 過早地免費提供了太多東西。今年早些時候, 谷歌的 Kelsey Hightower 告訴 Increment 雜志 [16] :“他們免費推出了一些東西,這就是本壘打。他們解決了整個問題并達到了這個問題的天花板:創建一個映像、構建它、將它存儲在某個地方、然后運行它。還需要做什么?”
Hykes 不同意這種說法。他說:“我認為這是錯誤的,一般來說,核心開源產品創造了巨大的增長,這首先創造了商業化的機會。許多公司成功地將 Docker 商業化,但 Docker 沒有。有很多東西可以商業化,只是 Docker 未能將其商業化。”
例如, 紅帽 [17] 和 Pivotal [18] (現在是 VMware 的一部分)都是 Docker 的早期合作伙伴,將 Docker 容器集成到他們的商業 PaaS [19] 產品(分別是 OpenShift 和 Cloud Foundry)中,并為開源項目做出了貢獻。
Stinemates 說:“如果我是慷慨的,紅帽公司早期的貢獻讓 Solomon 有點失控了。 Solomon 燒掉了很多橋梁,Hacker News 上有關于他與反對者爭吵的帖子 [20] 。企業合作伙伴不可能與 Solomon 一起擁有這些。”
今天,Hykes 說他犯了混淆“社區與生態系統”的錯誤。紅帽特別“不是社區的一部分,他們從來沒有為 Docker 的成功而生根,”他說。“我們的錯誤是非常希望他們成為社區的一部分。回想起來,我們永遠不會從這種伙伴關系中受益。”
因此,旅游科技公司 Amadeus 等早期客戶在 2015 年轉向紅帽,以填補他們認為 Docker 留下的企業級空白。Amadeus 的云平臺負責人 Edouard Hubin 通過電子郵件告訴 InfoWorld:“我們直接從使用 [Docker 的] 開源版本的先驅模式轉變為與紅帽建立強大的合作伙伴關系,他們為我們提供容器技術的支持。容器化是遠離虛擬化的技術變革的第一步。真正的游戲規則變革者是容器編排解決方案。顯然,Docker 輸給了 Kubernetes,這對他們來說是一個非常困難的局面。”
Kubernetes 的決定
Docker 會后悔之前做的一系列決定,因為它拒絕真正接受 Kubernetes 作為首選的新興容器編排工具 —— Kubernetes 允許客戶大規模、一致地運行容器隊列——而不是短視地推進自己專有的 Docker Swarm 編排器( RIP [21] )。
Docker 最早也是服務時間最長的員工之一 Jérôme Petazzoni 說:“最大的錯誤是錯過了 Kubernetes。我們處于集體思想泡沫中,我們在內部認為 Kubernetes 太復雜了,而 Swarm 會成功得多。沒有意識到這一點是我們的集體失敗。”
事實是,Docker 在 2014 年有機會與谷歌的 Kubernetes 團隊密切合作,并在此過程中可能擁有整個容器生態系統。Stinemates 說:“我們本可以讓 Kubernetes 成為 GitHub 上 Docker 旗幟下的一流 Docker 項目。事后看來,Swarm 上市太晚是一個重大錯誤。”
據在場的多名人士稱,谷歌舊金山辦公室的早期討論是技術性的和緊張的,因為雙方對如何進行容器編排持不同的意見。
Kubernetes 聯合創始人、現任 VMware 副總裁 Craig McLuckie 表示,他提出將 Kubernetes 捐贈給 Docker,但雙方未能達成協議。他告訴 InfoWorld:“那里有一個相互傲慢的因素,從他們那里我們不了解開發人員的經驗,但相互的感覺是這些年輕的新貴真的不了解分布式系統管理。”其他人則表示討論更為非正式,并且側重于容器技術的聯合開發。無論哪種方式,團隊從來沒有意見一致并最終分道揚鑣, 谷歌在 2014 年夏天推出了 Kubernetes [22] 。
Hykes 對 Google 向 Docker 提供 Kubernetes 項目的所有權提出異議,稱他們“有機會像其他人一樣成為生態系統的一部分”。
Hykes 承認當時 Docker 和 Google 團隊之間處于緊張關系。Hykes 說:“有那么一刻,自負占了上風。谷歌的很多聰明和有經驗的人都被 Docker 的完全局外人蒙蔽了雙眼。我們沒有在谷歌工作,我們沒有去斯坦福,我們沒有計算機科學博士學位。有些人覺得這是他們的事,所以有一場自我之戰。結果并不是 Docker 和 Kubernetes 團隊之間的良好合作,而此時合作確實有意義。”
Stinemates 說:“一方面是基本的自我,另一方面是與 [Kubernetes 聯合創始人] Joe Beda、Brendan Burns 和 Craig McLuckie 的緊張關系——他們對服務級別 API 的需求有強烈的看法,而從簡單的角度來看 Docker 在技術上對單個 API 有自己的看法,這意味著我們無法達成一致。”
Hykes 承認,當時 Docker 面臨著為想要擴展容器使用規模的客戶尋找編排解決方案的壓力,但當時Kubernetes 將成為該解決方案并不明確。Hykes 說:“Kubernetes 太早了,而且是幾十個中的一個,我們并沒有神奇地猜測它會占據主導地位,甚至不清楚谷歌對它的承諾。我問我們的工程師和架構師該怎么做,他們建議我們繼續使用 Swarm。”
甚至 McLuckie 也承認他“不知道 Kubernetes 會變成 Kubernetes。回顧歷史很容易認為這是一個糟糕的選擇。”
不管它失敗了,Kubernetes 最終贏得了容器編排之戰,其余的成為軟件行業的匆匆過客。
451 Research 的分析師 Jay Lyman 說:“Kubernetes 來了,并搶走了所有的風頭。它代表了谷歌在開發和開源方面對容器的使用,這在很多方面都超過了對 Docker 的關注。[Docker] 將 Docker Swarm 視為他們通過軟件獲利的方式。如果他們可以回去,他們可能會從一開始就與 Kubernetes 更緊密地集成。他們過于專注于獨自行動。”
McLuckie 說:“我最深切的遺憾之一是我們沒有找到談判的方法。Docker 提供了一些非凡的體驗,而 Kubernetes 提供的東西,從體驗的角度來看,并不那么引人注目。” 或者,正如 Docker 聯合創始人 Sebastien Pahl 指出的那樣:“簡單并沒有獲勝。我喜歡 Kubernetes,但它 不適合普通人 [23] 。”
高層的緊張氣氛
在 2015 年以 10 億美元的“獨角獸”估值完成 9500 萬美元的大型 D 輪融資之后,Docker 最終達到了炒作周期的巔峰。
Steinmates 說:“這設定了非常高的期望,并暴露了我們作為一家公司將面臨的一些基本問題。我認為 Ben [Golub,首席執行官] 對公司的想法與 Solomon 不同,兩人沒有意見一致應該不是什么秘密。董事會大量摻和努力讓創始人開心,并給 CEO 足夠的回旋余地,使公司取得成功。如果由 Solomon 決定,我們會堅持以社區為導向的路線來創造病毒式傳播。如果由 Ben 決定,我們會更早地轉向業務方面。這種緊張局勢導致我們對兩者都采取了半途而廢的方式。”
這種方法有效地催生了兩個Docker [24] :Docker 社區版(面向開發人員的廣受歡迎的命令行工具和開源項目)和 Docker 企業版(面向希望大規模采用容器的企業客戶的商業工具套件)。不幸的是,公司的動作太慢了,無法正式進行拆分并相應地分配資源。
Golub 承認他們“應該比實際更早地拆分業務”,而 Hykes 同意 Docker “從未找到連接公司這兩部分的方法”。
到了 2018 年,裂縫開始顯現,因為該公司努力在 日益不滿的開源社區 [25] 、強大的合作伙伴和要求在生產中運行容器的企業客戶之間找到可行的道路。
不久之后,Hykes 于 2018 年 3 月離開了他在公司的日常角色,他在一篇博客文章中指出,“作為創始人,我當然有復雜的情緒。當你創建一家公司時,你的工作是確保它有一天可以在沒有你的情況下取得成功。然后最終有一天會到來,慶祝活動可能是苦樂參半。對于創始人來說,放棄一生的工作絕非易事。”
今天回想起來,Hykes 更簡單。“我意識到我不屬于這家公司。留下對我來說沒有任何意義,所以我離開了......我多半是個應該繼續擔任首席執行官或離開的不快樂創始人。”
Docker 一分為二
面對 日益嚴重的資金問題 [26] ,Docker 輪換了新任 CEO,Golub 于 2017 年 5 月讓位給前 SAP 執行官 Steve Singh,然后 Singh 于 2019 年 6 月讓位給前 Hortonworks 首席執行官 Rob Bearden。
最終要接受批評的是 Bearden。上任后不久, Docker 于 2019 年 11 月將其企業部分業務出售給 Mirantis [27] ,Docker Enterprise 并入 Mirantis Kubernetes Engine。
Bearden 當時在一份新聞稿中說:“在與管理團隊和董事會進行徹底分析后,我們確定 Docker 有兩個截然不同的業務:一個是活躍的開發者業務,另一個是成長中的企業業務。我們還發現產品和財務模型大不相同。”
Docker 如今在哪里?
有了原始投資者 Insight Venture Partners 和 Benchmark Capital 的 3500 萬美元現金注入,剩下的 Docker 由原始 Docker Engine 容器運行時、Docker Hub 鏡像存儲庫和 Docker 桌面應用程序支撐,在 7 年公司資深人士 Scott Johnston 的領導下活了下來。
Johnston 告訴 InfoWorld,他正試圖通過“像激光一樣重新關注開發人員的需求”,讓公司回歸本源。“我們認為該公司比以往任何時候都更強大,因為三點:以客戶為中心、統一的市場定位和生態系統友好的商業模式。”
上周 Docker 宣布更改 Docker 軟件的許可條款。很快,為大公司工作的 Docker Desktop 專業用戶將不得不注冊付費訂閱才能繼續使用該應用程序。
Johnston 決心不重蹈覆轍,專注于為公司的核心軟件開發人員受眾提供價值。他說:“我們的野心更大,因為開發人員生態系統要面向的是世界上的每個開發人員,而不僅僅是那些與我們的運行時一致的開發人員。”
Johnston 認為“Docker 2.0”的增長機會在于為安全、已驗證的鏡像構建新的開發人員工具和 可信內容 [28] ,以及新興計算模型(如 無服務器 [29] 、 機器學習 [30] 和 物聯網 [31] 以容器技術為基礎的工作負載)背后的持續動力。
同時,Docker 仍然是行業標準的容器運行時, 如今 Docker Desktop 安裝在 330 萬臺機器上 [32] 。此外,在 Stack Overflow 的 2021 年開發者調查 [33] 中,49% 的受訪者表示他們經常使用該工具。
盡管如此,人們仍然對可能發生的事情深感失望。Stinemates 說:“如果我想要輕率,我會問今天 Docker 是否存在。從職業角度來看,這很可悲。我仍在尋找一家像 Docker 一樣令人興奮和充滿活力的公司,并能創造出火花。”
Hykes 說:“可以公平地說,Docker 未能實現其商業化的潛力……到目前為止。我很高興 Docker 在這么多年之后有再次有實現商業化的機會。這是對基礎項目和品牌的證明。”
引用鏈接
[1]
How Docker broke in half: https://www.infoworld.com/article/3632142/how-docker-broke-in-half.html
[2]
Docker 并沒有發明容器: https://www.infoworld.com/article/3204171/what-is-docker-the-spark-for-the-container-revolution.html
[3]
2019 年 11 月出售給 Mirantis: https://twitter.com/QuinnyPig/status/1194687851587198977?s=20
[4]
平臺即服務 (PaaS): https://www.infoworld.com/article/3223434/what-is-paas-a-simpler-way-to-build-software-applications.html
[5]
參加著名的 Y Combinator 計劃: https://blog.ycombinator.com/solomon-hykes-docker-dotcloud-interview/
[6]
Heroku 的競爭公司的創始人: https://www.infoworld.com/article/3614210/the-decline-of-heroku.html
[7]
2013 年 3 月在 PyCon 上由 Hykes 首次演示: https://www.youtube.com/watch?v=362sHaO5eGU
[8]
微軟: https://www.docker.com/blog/docker-microsoft-partnership/
[9]
AWS: https://aws.amazon.com/blogs/apn/docker-trusted-registry-aws-marketplace/
[10]
IBM: https://www.eweek.com/cloud/ibm-partners-with-docker-launches-containers-service/
[11]
滿滿一車的風險投資: https://www.infoworld.com/article/3622960/another-day-another-multi-billion-ipo-for-open-source.html?nsdr=true
[12]
Kubernetes: https://www.infoworld.com/article/3268073/what-is-kubernetes-your-next-application-platform.html
[13]
2014 年 Koality 的收購: https://techcrunch.com/2014/10/07/docker-acquires-koality-in-engineering-talent-grab/%23:~:text=Docker%2520decided%2520to%2520use%2520some,today%2520for%2520an%2520undisclosed%2520price.
[14]
2015 年的 Tutum 的收購: https://www.docker.com/blog/docker-acquires-tutum/
[15]
現在也存在: https://www.infoworld.com/article/3623291/github-container-registry-available-for-production-use.html
[16]
谷歌的 Kelsey Hightower 告訴 Increment 雜志: https://increment.com/containers/docker-ce-and-ee/
[17]
紅帽: https://www.openshift.com/blog/red-hat-puts-docker-kubernetes-at-the-center-of-its-openshift-3-paas
[18]
Pivotal: https://tanzu.vmware.com/content/blog/pivotal-cloud-foundry-has-supported-docker-for-a-long-time-now-pivotal-web-services-does-too
[19]
PaaS: https://www.infoworld.com/article/3223434/what-is-paas-a-simpler-way-to-build-software-applications.html
[20]
Solomon 燒掉了很多橋梁,Hacker News 上有關于他與反對者爭吵的帖子: https://news.ycombinator.com/threads?id=shykes
[21]
RIP: https://boxboat.com/2019/12/10/migrate-docker-swarm-to-kubernetes/
[22]
谷歌在 2014 年夏天推出了 Kubernetes: https://kubernetes.io/blog/2018/07/20/the-history-of-kubernetes-the-community-behind-it/
[23]
不適合普通人: https://www.infoworld.com/article/3614850/no-one-wants-to-manage-kubernetes-anymore.html
[24]
這種方法有效地催生了兩個Docker: https://increment.com/containers/docker-ce-and-ee/
[25]
日益不滿的開源社區: https://www.techrepublic.com/article/why-doesnt-anyone-weep-for-docker/
[26]
日益嚴重的資金問題: https://www.cnbc.com/2019/09/27/docker-is-trying-to-raise-money-following-arrival-of-ceo-rob-bearden.html
[27]
Docker 于 2019 年 11 月將其企業部分業務出售給 Mirantis: https://twitter.com/QuinnyPig/status/1194687851587198977?s=20
[28]
可信內容: https://www.docker.com/press-release/docker-expands-trusted-content-offerings
[29]
無服務器: https://www.infoworld.com/article/3406501/what-is-serverless-serverless-computing-explained.html
[30]
機器學習: https://www.infoworld.com/article/3214424/what-is-machine-learning-intelligence-derived-from-data.html
[31]
物聯網: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html
[32]
如今 Docker Desktop 安裝在 330 萬臺機器上: https://www.docker.com/blog/docker-index-shows-continued-massive-developer-adoption-and-activity-to-build-and-share-apps-with-docker/
[33]
Stack Overflow 的 2021 年開發者調查: https://insights.stackoverflow.com/survey/2021