热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

转自:InfoQDocker如今的体量与当初的潜在愿景相比实在太过渺小,本文将带你了解Docker“落得如此田地”的原因和真相的细节。Docker还活着

37f98e6582c198e597f867a5ef0b2e1d.gif

转自:InfoQ

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 员工、开源贡献者、客户及行业分析师,试图从这个分崩离析的故事中找寻真相。

1 “每件事都只能浅尝辄止”

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

2 与 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 会发展到今天这个程度。事后分析太容易了,但人在局中时确实没办法看得那么清楚。”

3 高层的裂隙

在 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 手中接过权柄。

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

Linux学习指南

f5ee3c5965e09fdddc9e734a13c2c66a.png有收获,点个在看 e9598d9bea2b81929679ddde58c6fddf.png


推荐阅读
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • Harmony 与 Game Space 达成合作,在 Shard1 上扩展 Web3 游戏
    旧金山20 ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • k8s进阶之搭建私有镜像仓库
    企业级私有镜像仓 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
author-avatar
鉴湖侠ph
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有