Docker 为什么输给了Kubernetes?Docker 员工自述!
共 6433字,需浏览 13分钟
·
2021-10-29 21:00
点击关注公众号,Java干货及时送达
Docker 如今的体量与当初的潜在愿景相比实在太过渺小,本文将带你了解 Docker“落得如此田地”的原因和真相的细节。
一、前言
另一方面,人们最担心的是企业内部采购流程的难度,这可能会“劝退”开发者继续使用 Docker,自然而然地,不少人开始探索替代方案,包括 Minikube、Canonical 的 MicroK8s 等。
至于开发者和企业会不会觉得 Docker Desktop 的替代方案更方便,又或者选择支付订阅计划所需的少量费用从而保持现有工作流程不变,还有待观察。
Docker 的商业尝试无可厚非,但更遗憾的是,Docker 从未成功将技术创新转化为可持续的商业模式,还被迫在 2019 年 11 月将企业业务出售给 Mirantis。
二、“每件事都只能浅尝辄止”
严重依赖巨额风险投资、竞争格局不断变化加上各大云巨头都想分一杯羹,Docker 这家年轻企业面临的压力实际远远超过大多数人的想象。
也有人认为 Docker 过早把好东西免费发布了出来。今年年初,谷歌的 Kelsey Hightower 在采访中表示,“他们相当于是免费推出了自己最有份量的王牌。他们已经解决了问题,而且是全面解决:设计镜像、构建镜像、存储镜像、运行镜像。之后还剩什么?没有空间了呀。”
分享阅读:Spring Boot 学习笔记。
三、与 Kubernetes 谈不拢的合作:自负与傲慢
纵观整个发展历程,Docker 做出了很多令其追悔莫及的决定,但其中最严重的一个当数拒绝接受 Kubernetes 作为首选新兴容器编排工具。面对这位新朋友,Docker 摆出了敌对的架势、一意孤行地推进自己的专有 Docker Swarm 编排工具。
事实上,Docker 公司在 2014 年本来有机会与谷歌 Kubernetes 团队开展密切合作,并在过程当中把控整个容器生态系统。推荐一个 Spring Boot 基础教程及实战示例:https://www.javastack.cn/categories/Spring-Boot/
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 最终赢得了容器编排之战。最新面试题整理好了,点击Java面试库小程序在线刷题。
但 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、要么直接告别更好。”
推荐一个 Spring Boot 基础教程及实战示例:https://www.javastack.cn/categories/Spring-Boot/
面对日益严重的资金问题,Docker 公司轮换了新的 CEO——Ben Golub 于 2017 年 5 月让位于给前 SAP CEO Steve Singh;2019 年 6 月,前 Hortonworks CEO Rob Bearden 又从 Singh 手中接过权柄。另外,Java 系列面试题和答案全部整理好了,微信搜索Java技术栈,在后台发送:面试,可以在线阅读。
五、现在 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 项目的品牌和底子都很厚实。”
编译:核子可乐、燕珊
来源:公众号:InfoQ(ID:infoqchina)
原文:https://www.infoworld.com/article/3632142/how-docker-broke-in-half.html
关注Java技术栈看更多干货