写点什么

Docker 员工自述:我们为什么“输”给了 Kubernetes?

  • 2021-09-10
  • 本文字数:4882 字

    阅读完需:约 16 分钟

Docker员工自述:我们为什么“输”给了Kubernetes?

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 回忆道,“我们希望建立起伟大的社区并通过开发者产品获利,同时还希望打造一款出色的运营商产品,帮助客户大规模构建并部署容器。虽然愿景在此,但我们很快意识到自身必须迅速扩大规模,而且拿不出太多时间来平衡社区发展与商业企业转型这两条路线……作为一家初创企业,我们每天在匆忙中做出上百个决定,之后就是祈祷自己能少犯点错。”

与 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 项目的品牌和底子都很厚实。”


延展阅读:


https://www.infoq.cn/article/x14tVB7izIDJpJHeoEuJ


《Docker 的第二次死亡》


《曾两次被断言死亡,容器领导者 Docker 正式开启商业化之路》

2021-09-10 14:4811402

评论 4 条评论

发布
用户头像
老坟树新碑
2022-02-10 09:41
回复
用户头像
先把dockershim维护起来吧
2021-09-18 13:52
回复
用户头像
docker作为独立软件的最大问题在于缺乏实质性的技术壁垒,关键的工程难题都是linux namespace&cgroups解决的,剩下的属于易用性包装。
基础设施软件往往有巨大的用户价值却几乎没有商业价值,比如内核、工具链、浏览器和AI框架等,变现需要依靠出售算力、分发流量或者附加复杂的实施交付,前两种方法接近巨头专属,第三条路则会沦落为外包公司。
微软曾经10亿美元报价收购docker,那是他最好的上岸机会。
2021-09-15 11:34
回复
用户头像
用docker的所有人都从docker中获得了好处,只有docker没有
2021-09-12 12:24
回复
没有更多了
发现更多内容

Linux中buff-cache占用过高解决方案

入门小站

Linux

浅谈限流组件的应用和设计原则

xiaoxi666

redis sentinel 分布式限流 redisson redis-cell

Druid 集群方式部署 —— 配置调整

HoneyMoose

linux中常见工具安装问题集锦

liuzhen007

8月日更

docker编排参数详解(docker-compose.yml配置文件编写)

xcbeyond

Docker 容器 8月日更

深入了解NIO底层原理

陈皮的JavaLib

Java 面试 nio 8月日更

有状态流处理简介(一)

Databri_AI

flink 批处理 状态

spring的循环依赖

卢卡多多

spring aop 8月日更

在线邮箱地址提取工具

入门小站

工具

在明道云上搭建的应用维护管理的几点建议

明道云

【设计模式】桥接模式

Andy阿辉

编程 后端 设计模式 8月日更

超全激活函数学习总结!!!

Shirakawa

神经网络 机器学习 算法 激活函数

两个小女孩

箭上有毒

8月日更

分布式认知工业互联网平台如何赋能企业数字化转型?

CECBC

Druid 集群方式部署 —— 配置 Zookeeper 连接

HoneyMoose

Druid 集群方式部署 —— 启动服务

HoneyMoose

前端之数据结构(三)集合和字典

Augus

数据结构 8月日更

明道实施与需求的耦合

明道云

【前端 · 面试 】HTTP 总结(六)—— HTTP 版本区别

编程三昧

面试 HTTP 8月日更 http版本

Pandas系列_DataFrame数据筛选(上)

Peter

Python 数据分析 pandas

Druid 使用 Kafka 数据加载教程——下载和启动 Kafka

HoneyMoose

Druid 集群方式部署 —— 端口调整

HoneyMoose

字节跳动旗下大力教育大批量裁员,赔偿 n+2

hanaper

架构训练营 模块4作业

sophiahuxh

我受够WIN10了!!!

Jackpop

网络攻防学习笔记 Day97

穿过生命散发芬芳

态势感知 网络攻防 8月日更

yyds,Win10真香!!!

Jackpop

JavaScript代码片段学设计模式

devpoint

设计模式 工厂模式 8月日更

DataFrame数据创建:10种方式任你选

Peter

Python 数据分析 pandas

☕【Java技术指南】教你如何使用【精巧好用】的DelayQueue(延时队列)

洛神灬殇

Java 延迟队列 8月日更 DelayedQueue

元数据管理服务分析报告

漫长的白日梦

数据湖 AWS 元数据

Docker员工自述:我们为什么“输”给了Kubernetes?_云原生_Scott Carey_InfoQ精选文章