曾兩次被斷言死亡,容器領導者 Docker 正式開啓商業化之路

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“推出 Swarm”,“被 K8s 棄用”。Docker 曾兩次被斷言死亡,如今生態逐漸恢復,正式推出付費商業版 Docker Desktop。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"美國當地時間8月31日下午,Docker宣佈推出 Business (商業)版本的 Docker Desktop(Docker 桌面),爲大型企業提供更豐富的組件\/功能。商業版Docker桌面沿用訂閱模式收費,定價爲21美元\/月。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Docker 首席執行官斯科特·瓊森(Scott Johnston)表示,“短期來看,我們需要解決供應鏈安全的挑戰。而長期來看,今天全球開發者有大約1800萬人,而到2030年,這一數量將上漲到4500萬,龐大的開發者市場處於持續增長中。在這一背景下,Docker如今已成爲業界標準,我們要持續擴展業務,就必須有一個可持續的商業模式,因此我們推出了新的收費版本。”"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"強制大規模企業付費,新版本有哪些亮點"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"據悉,推出商業版Docker Desktop 後,原先的免費版本改名爲“個人版”(Personal)。而收費版(包括Pro、Team和Business)針對大規模企業,其要求公司員工數量超過250人或者年收入超過1000萬美金的企業如果使用桌面版,必須支付訂閱費。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/ac\/acb8b7bc1a1c25793e0599154cadd1cf.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Docker Desktop 是一個 GUI 工具,用於管理各種 Docker 組件和功能,包括容器、圖像、卷(附加到容器的存儲)、本地 Kubernetes、容器內的開發環境等。大多數 Docker 組件可用於 Windows、Mac 和 Linux,但Docker 僅適用於 Windows 和 Mac。相比較而言,商業版的Docker Desktop增強了包括集中管理、單點登錄和增強安全性在內的功能。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"對於新版本的特性來說,瓊森提到 “使用商業版用戶Docker Desktop 的用戶可以在統一的控制平面中設置開發人員的內容訪問權限。而後根據內容會根據權限分發到相應的開發人員的 Docker 桌面,同時,該桌面能夠在開發環境中使用。”除此外,瓊森還提到“我們還提供基於 SaaS 的集中管理,以控制 CPU 的使用率、內存、端口和防火牆訪問權限的配置。例如爲了解決業務層的安全和用戶管理問題,我們推出了單點登錄功能”。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Docker Desktop 新版本的侷限性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"有亮點就會有侷限性,Docker Desktop 推出的新版本亦如是。Docker Desktop 新版本發佈時,Docker CEO 瓊森提到此次新版本發佈不涉及Docker 的命令行引擎。其實,雖然 Docker 有20%~25%的開發環境使用的是 Linux 系統,但Docker Desktop 一直不支持 Linux 版本。對此,瓊森提到,我們一直希望 Docker Desktop 能統一管理一致的開發環境,但目前時機還不成熟。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"除了不支持 Linux 開發環境外,Docker Desktop 在遠程開發方面也有不完善之處,如 GitHub Codespaces 或 Gitpod。使用本地計算機搭載Mac\/Windows\/Linux是當下大部分用戶的選擇,但也有用戶對本地和遠程的開發環境一致性有需求。瓊森提到,這一問題需要時間,未來會逐步得到解決,而當下,如果對此需求強烈的用戶,可使用Linux環境進行開發,以解決本地和遠程開發體驗的一致性問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Docker平臺作爲業界標準,擁有衆多組件,上述 Docker Desktop 僅僅是其中一部分。那麼,整個Docker平臺是什麼樣的呢? "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Docker 平臺架構圖解"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Docker是一個容器平臺,其用於構建,保護和管理從開發到生產在內部和雲端的應用程序。總體來說,Docker 平臺有很多組件,除了Docker Desktop 外,還包括Docker 鏡像,Docker 容器,Docker 守護進程,Docker 客戶端,Docker 註冊表和Docker Hub。他們的之前互相聯繫,形成如今的Docker平臺:Docker 鏡像定義了容器的內容。Docker 容器是可運行的鏡像實例。Docker 守護進程是一個後臺應用程序,用於管理和運行 Docker 鏡像和容器。Docker 客戶端是一個命令行實用程序,它調用 Docker 守護進程的 API。Docker 註冊表包含鏡像,Docker Hub 是一個廣泛使用的公共註冊表。大部分 Docker(但不是桌面)在"},{"type":"link","attrs":{"href":"https:\/\/www.apache.org\/licenses\/LICENSE-2.0","title":null,"type":null},"content":[{"type":"text","text":"Apache v2 許可"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"下是"},{"type":"link","attrs":{"href":"https:\/\/github.com\/docker","title":null,"type":null},"content":[{"type":"text","text":"開源"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#303030","name":"user"}}],"text":"而從其架構和運行流程來看,Docker 是一個 C\/S 模式的架構,後端是一個松耦合架構,衆多模塊各司其職。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/f2\/f268282f4a66b024bd36f2f5e408dd83.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Docker運行的基本流程爲:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":null,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"用戶是使用 Docker Client 與 Docker Daemon 建立通信,併發送請求給後者。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":2,"normalizeStart":2},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Docker Daemon 作爲 Docker 架構中的主體部分,首先提供 Docker Server 的功能使其可以接受 Docker Client 的請求。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":3,"normalizeStart":3},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Docker Engine 執行 Docker 內部的一系列工作,每一項工作都是以一個 Job 的形式的存在。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":4,"normalizeStart":4},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Job 的運行過程中,當需要容器鏡像時,則從 Docker Registry 中下載鏡像,並通過鏡像管理驅動 Graphdriver 將下載鏡像以 Graph 的形式存儲。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":5,"normalizeStart":5},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"當需要爲 Docker 創建網絡環境時,通過網絡管理驅動 Networkdriver 創建並配置 Docker 容器網絡環境。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":6,"normalizeStart":6},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":6,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"當需要限制 Docker 容器運行資源或執行用戶指令等操作時,則通過 Execdriver 來完成。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":7,"normalizeStart":7},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":7,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Libcontainer 是一項獨立的容器管理包,Networkdriver 以及 Execdriver 都是通過 Libcontainer 來實現具體對容器進行的操作。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"可見,Docker 平臺是一個工程複雜度很高的應用,每一次收費模式調整的背後,都牽涉到衆多工程問題。而在 Docker 收費模式之外,其技術路徑的成長可謂一波三折,甚至曾經歷了兩次死亡。 "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"兩次死亡的 Docker,一波三折的成長之路"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#303030","name":"user"}}],"text":"2013 年,當時名叫 dotCloud 的 Docker 公司,開源出來了自己的容器項目 Docker。Docker 通過鏡像打包的方式保持了本地環境和雲端環境的高度一致,解決了運維人員的一大心病,將運維人員從一遍遍的重複勞動中解放了出來。同時友好簡潔的封裝,對開發人員十分具有親和力,這讓 Docker 一舉走紅。很多後端和雲計算領域的優秀的開發力量都彙集在了 Docker 的周圍,生態一時間變得異常繁榮。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#303030","name":"user"}}],"text":"然而,隨着社區不斷壯大,Docker意識到,作爲開源生態的一部分,他們還缺少有效的商業模式,他們將眼光放到了容器編排領域,推出了 Swarm,但遺憾的是,Swarm並未真正流行起來。這一事件後來還被稱爲“Doker的第一次死亡”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#303030","name":"user"}}],"text":"不只是網友的玩笑,作爲 Docker 項目早期的重要貢獻者,RedHat 對 Docker 公司推出 Swarm 的平臺化戰略表示很不滿並憤憤退出該項目。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#303030","name":"user"}}],"text":"之後,RedHat 聯合 Google,共同牽頭髮起了如今大名鼎鼎的 CNCF(Cloud Native Computing Foundation),推動 Kubernetes 的發展(K8s)。由於K8s 極其開放的生態,以及 Docker 自身盈利和技術的問題,K8s不斷髮展壯大,成爲主流。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#303030","name":"user"}}],"text":"甚至到2016 年 9 月,Google 和 RedHat"},{"type":"link","attrs":{"href":"https:\/\/thenewstack.io\/oci-building-way-kubernetes-run-containers-without-docker\/","title":null,"type":null},"content":[{"type":"text","text":"聯合宣佈了"}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#303030","name":"user"}}],"text":"“fork Docker”,也就是後來的 CRI-O 項目,用產品表達對 Docker 價值取向的不滿。並在2020年12月棄用Docker支持,宣告競爭結束。這一事件被網友戲稱爲“Docker的二次死亡”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在此之後,Docker 痛定思痛,開始了自救與革新之路。"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#333333","name":"user"}}],"text":"首要目標便是推廣社區版項目,增加生態系統健康度。2020年,經過一年的努力後,Docker成功將社區版項目中一小部分用戶轉化爲付費客戶,直接導致其2020年年度經常性收入 (ARR) 同比增長 170%。並於"},{"type":"text","text":"2021年3月獲得2300萬美元B輪融資,開始發力產品創新,提升用戶做容器化應用開發的生產力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"如今,半年時間過去,Docker 推出了 Docker Desktop 商業版,並將免費版本統一爲個人版。分不同梯度收取訂閱費,正式開啓商業化之路。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在不久的將來,隨着 Docker 在產品、社區推廣和商業模式上不斷迭代進步,或許我們能看到 Docker 再次作爲容器領導者歸來。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章