6 Prometheus
项目之后
CNCF社区迅速在成员项目中添加了
- Fluentd
jagerTracing
CNI
等一系列容器生态的知名工具和项目。
而在看到了CNCF社区对用户表现出来的巨大吸引力之后,大量的公司和创业团队也开始专门针对CNCF社区而非Docker公司制定推广策略。
面对这样的竞争态势,Docker公司决定更进一步
在2016年,Docker公司宣布了一个震惊所有人的计划:放弃现有的Swarm项目,将容器编排和集群管理功能全部内置到Docker项目中
显然,Docker公司意识到了Swarm项目目前唯一的竞争优势,就是跟Docker项目的无缝集成。那么,如何让这种优势最大化呢?那就是把Swarm内置到Docker项目当中。
实际上,从工程角度来看,这种做法的风险很大。
内置容器编排、集群管理和负载均衡能力,固然可以使得Docker项目的边界直接扩大到一个完整的PaaS项目的范畴,但这种变更带来的技术复杂度和维护难度,长远来看对Docker项目是不利的。
不过,在当时的大环境下,Docker公司的选择恐怕也带有一丝孤注一掷的意味。
而Kubernetes的应对策略则是反其道而行之,开始在整个社区推进“民主化”架构
从API到容器运行时的每一层,Kubernetes项目都为开发者暴露出了可以扩展的插件机制
鼓励用户通过代码的方式介入到Kubernetes项目的每一个阶段。
Kubernetes项目的这个变革的效果立竿见影,很快在整个容器社区中催生出了大量的、基于Kubernetes API和扩展接口的二次创新工作,比如:
热度极高的微服务治理项目Istio
广泛采用的有状态应用部署框架Operator
开源创业项目 — Rook,通过Kubernetes的可扩展接口,把Ceph这样的重量级产品封装成简单易用的容器存储插件
就这样,在这种鼓励二次创新的整体氛围当中,Kubernetes社区在2016年之后得到了空前的发展
不同于之前局限于“打包、发布”这样的PaaS化路线,这一次容器社区的繁荣,是一次完全以Kubernetes项目为核心的“百花争鸣”。
面对Kubernetes社区的崛起和壮大,Docker公司也不得不面对自己豪赌失败的现实
但在早前拒绝了微软的天价收购之后,Docker公司实际上已经没有什么回旋余地,只能选择逐步放弃开源社区而专注于自己的商业化转型。
所以,从2017年开始,Docker公司先是将Docker项目的容器运行时部分
Containerd
捐赠给CNCF社区,标志着Docker项目已经全面升级成为一个PaaS平台
紧接着,Docker公司宣布将Docker项目改名为
- Moby
然后交给社区自行维护,而Docker公司的商业产品将占有Docker这个注册商标。
Docker公司这些举措背后的含义非常明确:它将全面放弃在开源社区同Kubernetes生态的竞争,转而专注于自己的商业业务
并且通过将Docker项目改名为Moby的举动,将原本属于Docker社区的用户转化成了自己的客户。
2017年10月,Docker公司出人意料地宣布,将在自己的主打产品Docker企业版中内置Kubernetes项目
持续了近两年之久的“编排之争”落下帷幕!
2018年1月30日,RedHat斥资2.5亿美元收购CoreOS
2018年3月28日,一切纷争的始作俑者,Docker公司的CTO Solomon Hykes宣布辞职,纷纷扰扰的容器技术圈子,至此尘埃落定。
7 总结
容器技术圈子在短短几年里发生了很多变数,但很多事情其实也都在情理之中。就像Docker这样一家创业公司,在通过开源社区的运作取得了巨大的成功之后,就不得不面对来自整个云计算产业的竞争和围剿。而这个产业的垄断特性,对于Docker这样的技术型创业公司其实天生就不友好。
在这种局势下,接受微软的天价收购,在大多数人看来都是一个非常明智和实际的选择。可是Solomon Hykes却多少带有一些理想主义的影子,既然不甘于“寄人篱下”,那他就必须带领Docker公司去对抗来自整个云计算产业的压力。
只不过,Docker公司最后选择的对抗方式,是将开源项目与商业产品紧密绑定,打造了一个极端封闭的技术生态。而这,其实违背了Docker项目与开发者保持亲密关系的初衷。
相比之下,Kubernetes社区,正是以一种更加温和的方式,承接了Docker项目的未尽事业,即:以开发者为核心,构建一个相对民主和开放的容器生态。
这也是为何,Kubernetes项目的成功其实是必然的。
Docker公司在过去五年里的风云变幻,以及Solomon Hykes本人的传奇经历,都已经在云计算的长河中留下了浓墨重彩的一笔。











