从Docker的转变,谈容器生态与微服务的发展

编者按:容器技术目前已经成为技术圈内的"常识",但是容器生态能否健康发展仍然任重道远。在收获最初的赞扬之后,领军者 Docker 如今身陷非议:2016 年执意壮大发展 Swarm 进军编排领域,似乎 Docker 公司一方面惹毛了很多强劲的编排领域玩家,另一方面也并没有收获预料之中的成果。12月14日,Docker 计划将其关键容器运行模块之一 Containerd 贡献给开源社区。

在周晖先生看来,这意味着 Docker 的重心将回归到容器技术本身,或已放缓其在编排领域的步伐。一直从事 PaaS 和容器技术研究的周先生还认为,不管怎样,Docker 都是一家有着特色的优秀公司,Docker 成功地将容器技术理念深入人心,并且也增加了业界对 PaaS 的认识和信心。以下文章来自于 InfoQ 对 Pivotal 大中华区云计算首席架构师周晖的采访整理。

诞生与兴起:Docker 赢得声誉

容器技术被传颂并深入人心,是因为 Docker;但是,其实技术积累由来已久,早期的容器技术是 Google、IBM 等公司贡献出来的,Pivotal 也发展了 Warden 容器技术,这些公司都专注于在各自的常规业务中,并没有重点投入容器技术;而 Docker 很好地将容器技术单独形成项目产品推向社区。

为什么有同样技术潜力的公司,会有如此迥异的产品决策?我认为是因为着眼点不一样或者说基因不同,大公司着眼于规模化的企业应用,比如 Pivotal 把容器技术内置在 PaaS 技术中,然后以完整的解决方案的形式提供出来。结合自身例子来看,其实 Warden 比 Docker 早,但是 Pivotal 从成立的第一天起,就是面向企业级的,产品代码模块很完整,Warden 容器的代码量很可能少于整体 Cloud Foundry 的千分之一,单独拿出来对企业客户意义不大,并且目标客户也不需要知道那么底层的技术细节,他们需要更专注于业务创新。

而 Docker 公司具有开发者基因:Docker 的产品很适合开发者,快速升级以满足新的功能需求,完全不用管和前面版本的兼容性,就像有故障重启 Windows 那么简单,但是你让客户去重启他们生产系统的 Linux 就不会那么轻易了,并且 Docker 对开发者简单易用。Cloud Foundry 提供的容器是黑盒子,对运维人员来说简单易用,无需关注容器细节,甚至都不需要直接操作容器;而 Docker 是白盒子,随意增添组合特性,对于技术fans 很有价值。同样 Docker 也有很多很棒的设计,举例说明,镜像仓库,谁都可以把自己做好的 Docker 镜像上传上去,目前Docker的镜像仓库有海量的镜像,这符合互联网的分享精神并因此发展壮大。所以 Docker 之所以发展起来,可以说他摸到了市场的脉络。

因此除了自身优秀和容器界技术成熟之外,另外一个因素是 Docker 生逢其时。2013年Docker 诞生之时,正值企业应用转向互联网应用高速发展时期,应用小型化微服务化的需求正好是其用武之地,也就是适应了今天流行面更广的微服务的一个方面——应用部署到容器中运行。

变形发展:急于盈利,引起生态圈的利益冲突

Docker 在2016这一年做了让生态圈反感的事情:通过之前收购一些公司大张旗鼓地发展 Swarm,集中发力集群编排管理。

容器生态中有两个领域:一类是容器本身的领域,另外一类编排集群管理领域。这两个领域虽然会有重叠的部分不完全独立,但是基本上各有各的发展方向,靶向用户不同。

第一领域是 Docker 最开始在做的内容,面向开发者、小型企业或者个人版尝试测试,直接应用在大型企业中的还是比较少,最多是一个部门级别的应用(数量级一般为个位数);用于开发和测试,在生产中用的比较少(设计时也没有考虑到生产的复杂性)。

第二领域的领军代表是 Mesos、Kubernetes 和 Cloud Foundry,或者说现在的 CaaS.在企业中的应用,这个派系更适合做成云,管理的是大规模的应用运行生产环境。

两者的定位是不一样的,但是第二类集群管理具有更多、更早的盈利空间;经过多轮融资后的 Docker 对盈利愿望比较强烈,因为容器本身开源很难挣钱,都是不掏钱的客户,所以希望打入企业级的容器集群管理市场来盈利。可是 Swarm 等一系列举动被视为捆绑竞争,非但没有让人对其技术刮目相看,反而损还他与生态圈内其他厂商的关系。在今年7月底,Google Kubernetes 布道师 Kelsey Hightower 和 Docker的 CTO Solomon Hykes在 Twitter 上发生了激烈争论,争论的主题是要不要用 RunC 或其他容器来取代 Docker 引擎以及 OCI 的意义。