Docker终于找到了一条光明的商业化道路

历史总是被人无情的抛弃和忘记,Docker的商业化,一时之间被解读到成为众矢之的。为什么总是有人去拿道德的大棒去抡人了呢?一时之间,证明开源的情怀就是扯淡,先填饱肚子为先者,开始奔走相告,Docker终于向世俗妥协,又多了一个知己的喜悦。哎,放弃这些戏谑之言吧。该正经的对待这次品牌的战略之变。

事件起因

上周 Docker 公司在其技术会议DockerCon会议上宣布了新的项目:LinuxKit和Moby,一时之间在开发圈引起轩然大波,而在本土则是一篇知乎上的回复,刷爆了4月24日早上(周一)的朋友圈,知乎的地址是:对于Docker改名Moby ,大家怎么看? ,其中一标榜为做全球云的匿名用户的回答,仿佛刺激什么人的神经,一下子拥泵无数,认同、赞许声不绝于耳。大意是Docker认怂了,放弃情怀路线,向世俗低头,在赚足了粉丝之后要走欺骗大家的路线,下一个VMware就要诞生了,之类的。

我不敢苟同,我想我应该以一名 开源布道者 的身份,来发表一下我自己的看法。

红帽与Fedora 社区、项目

在谈Moby和Docker之前,笔者要和大家先谈谈Fedora与RedHat,历史总是有相似之处,但也不会完全但相同,但总能够通过回顾过去来总结当下,从而发现蛛丝马迹。

时间要退回到2003年,彼时的红帽做了一个很大的决定,不再支持已经发行了将近10年的Linux发行版——RedHat Linux,当时的版本是RedHat Linux 9,也就是说不会出RedHat Linux10版本,而是更改为RedHat Enterprise Linux 2.1 。除此之外,还进行了纯粹的社区建设,基于社区的发行版,由志愿者驱动的发行版——Fedora就这样诞生了。

Fedora 最初的名称叫做Fedora Core,在发行到第7个版本之后,简称为Fedora,之后一直沿用至今,目前的版本是Fedora 25,主要的版本有三个:工作站、云平台、服务器。

Fedora 的logo和归属权是属于红帽公司的,但Fedora有着非常成熟的社区化运营和治理,不仅就操作系统而言有明确但项目分工,而且还有特别兴趣小组(SIG,Kubernetes 社区也模仿了此举措)这样的创新团队。成为RHEL重要的软件创新源头,来自全球各地的志愿者,当然也包括红帽公司的员工,为这个全球较流行的Linux发行版贡献力量。

红帽虽然是在1993年成立,并在1999年赶上了互联网.com时代的浪潮,也成功的IPO,但是其实一直在盈利模式上没有很好的突破。直到2003年将自己的商业版和社区版的品牌分离,之后,一发不可收拾,到目前为止,已经是开源界独一无二的成功的上市公司,最近的季度报表现实,收入超过20亿美元。

在2003的红帽发行版重构品牌之时,也有不服的人站出来直接发展出项目CentOS,目标就是RHEL的社区版,直指红帽的商业发行版RHEL。尽管后来在2014年红帽将CentOS收购,但CentOS究竟是RHEL的助推者还是寄生者,现在还不好下结论。

Docker 的商业化道路

Docker 作为PaaS平台dotCloud的衍生品,以重新包装Linux的容器而风靡开发者圈,完全重新定义了软件的交付方式。自2013年第一个版本发布起,发展非常迅速。不仅吸引了众多IT大鳄的青睐,而且很快成为了Linux容器的生态事实上的标准。

但是,Docker本身的商业化道路一直都备受关注,正当很多基于Docker的创业公司和产品层出不穷,急着变现的时候,比如国内很多基于容器的云公司,如红帽的OpenShiftV3的PaaS平台,以及公有云AWS、Azure、GCE等都似乎利用容器赚了个盆满钵满,然而,很多人开始为Docker公司着急了,害怕他成为当年Sun公司的Java,大家都在赚钱,唯独最初的原创者找不到合理的模式。

最初Docker走的商业化道路是提供安全的Docker镜像仓库和漏洞检查等,然而似乎买账的人并不多,就在前不久,Docker公司将Docker的版本区别为企业版和社区版,这样反而更加引起开发者的不乐意,加上Kubernetes在容器编排的盛行和社区经营的成功,Docker周边的组件如SwarmKit等,正在呈下降趋势。俗语有云:“穷着变,变着通。”我想,过去的都是铺垫,只是时机未到,这不,Docker如此高调的举措,着实是很多人没有想到的。

技术架构诠释

基于开源的战略,技术架构一定是其中一个部分。正如Brook在《设计原本》中所提到的,没有一个合理的技术架构,协作的可能性就会为零。

让我们通过Docker官网上介绍的Moby项目,来回顾一下Docker和Moby的技术发展。

在Docker刚刚从dotCloud的项目中分离出来的时候,一切看起来都是那么的粗糙,在很多人眼里,甚至都不能算是创新,而是旧的技术的一个重新组合,如lxc、cgroup、namespace等,下图非常形象的说明了一切。

技术的本质就是在各种组合,在不断进化的过程中,Docker渐渐的发展成为独立的,比如替换掉了LXC,很多原来小的功能,甚至都发展出来相对独立的组件如runc、 HyperKit、VPNKit、SwarmKit、InfraKit、containerd等等。但是这样依然远远不够。

某种程度上,Docker依然是被业务所推动,随着云计算,数字转型时代的到来,IoT、Mobile、机器人、AI等,也随着各种平台的需求,如AWS、Azure、GCP,以及各种操作系统Linux、MacOS、Windows等,Docker不想重复造轮子,这不是一个开源的思路,于是从大众汽车的生产线获得灵感,以生态为目标,将各种组件分离出来,进而满足各种层次的需求。

如上图所示,要将协作提高到更高的层次,还不是汽车厂那么的“集中和官僚”,于是以技术为主导,设想出Moby项目,Moby更像是一个“乐高积木”,可归纳为:

  1. 容器化的组件库(例如:底层的构建、日志处理、卷管理、网络、镜像管理、containerd、SwarmKit等)
  2. 框架,用于组装组件到一个独立的容器平台,当然也包括这些组件的构建工具、测试、部署artifacts。
  3. 一个参考模型:Moby Origin, 诞生于Docker原来的架构。

解读Moby的项目声明

Docker 最初的使命和形式,仍然保持原状,人们可以构建、运行、交付容器。但是Docker本身也在进化,模块化的组件会被不断的独立,如runc、containerd等。而且Containerd也捐赠给了CNCF基金会。

Moby,将以“乐高积木”的形式出现,能够聚合众多的组件,成为一个框架式的试验场地,让容器爱好者来进行各式各样的组合、试验,进而发展和创新。

以Fedora和RHEL作为对比和参照,(尽管不完全一致。)Moby正是大家各种创意的“沙滩”,供容器发烧友和Geek们进行创新和测试,有很好的创意进行第一时间的验证。完全由社区、志愿者驱动,交给了GitHub的开源组织来提供社区的运营,也会组合其它诸如LinuxKit这样的关系紧密的项目。而Docker则渐渐退出激进、狂热等充满创意的阶段,进而开始趋于稳定、安全、企业级应用成为形容其关键词,目标直指各种上市公司的IT交付基础设施。

按照“社区胜于代码”的思路,Moby还有很长的一段路要走,能够聚集更多的业内爱好者和高手,才是真正的挑战之所在。我宁愿相信Docker自己所说的,他们是和整个生态息息相关的:

if the ecosystem succeeds, we succeed.

结语

经过了多少年的沉淀,大众的情绪总是能被某些微妙的事件给挑动起来,是质疑?困惑?仇恨?对待开源的态度究竟是什么?不妨深呼吸一下,仔细冷静的抽丝剥茧般的将真相给找出来,这个世界运行的法则究竟是什么?为什么你会被感染?而真正解决问题的是什么?

Docker 目前的做法值得所有人尊重!他在不断的探索,不断的尝试,而这就是让时代能够进步的动力和原因所在!他在平衡社区的生态与各方开发者的情感以及自己商业化道路之间复杂微妙的关系!这种努力和尊重,值得开源界敬重。

我们唯一能做的就是希望Docker能够平衡好各方利益,为技术创新走得更远!

题外话

有资本界的朋友是如此评价Docker的:

Docker走出如此的路数一点也不意外,从微软的收购未果而言,说明后面已经有资本和运营的人在预估了,一定是比微软更高的价格来计算的。这说明有业界的高手在帮助Docker的商业化,在恰当的时间做恰当的事,是一个企业能够成功的标志性事件。