DockerCon回顾(一):Docker、CoreOS握手言和,共同制定容器标准

2015-06-26 16:48


美国时间6月22日,DockerCon 2015在美国旧金山举行。在大会的Keynote上,Docker创始人兼CTO Solomon Hykes宣布:Docker将联合CoreOS等公司共同创建一个完全开放的容器标准,称之为“开放式容器项目”(Open Container Project)。包括AWS、Google、Microsoft、Redhat、VMWare、华为等超过20家业界巨头同时宣布支持该项目,并成为开放式容器项目创始成员。Docker率先为OCP捐献出了Docker所基于的容器格式和运行时(Runtime)代码及文档,成为OCP项目的基石。同时,由CoreOS发起的Application Container(appc)标准将与OCP整合。这也就是说OCP将会成为了首个业界开放、统一的容器标准。

近两年多来,Docker引领了一场以容器为核心的,席卷互联网应用乃至整个IT界的技术革新,正从根本上改变应用开发和发布的方式。经过持续爆发式的成长,以及迅速壮大的开发者社区和上下游生态,Docker容器实际上已经成为了容器格式和运行时的标准。之前,以CoreOS为代表的容器提供商认为,容器的标准不应该由一家公司掌控,而应更具开放性。

2014年12月,CoreOS推出自己的容器rkt,并随后发起了一项开放式的容器标准Application Container(appc),该标准立刻受到了Google、VMWare、Redhat等重量级公司的支持。而由于有不同容器标准的存在,所以也引发了容器战争,并很有可能引起社区分裂,从而减慢容器技术的发展进程。OCP的发布逆转了这一走势,包括Docker、CoreOS在内的公司将共同参与开放式委员会的管理,并统一定义容器标准。社区和生态圈合作伙伴将受益于这个开放式的标准。

Docker创始人兼CTO Solomon Hykes在大会上表示,Docker一贯的方针就是要促进开放式的标准。Docker最大的价值不在于特定的技术,而是让所有人,包括企业和用户,对于某些标准实现统一。既然Docker已经成为了实际上的容器标准,那么Docker也肩负着完善这一标准的使命。而Solomon认为,完善容器标准的最好方式就是推进该标准的开放性。Solomon对此提出以下几点原则。

  1. 正式的标准:开放基于Docker的容器格式,即Open Container Format(开放式容器格式),作为OCP容器格式定义的起点。
  2. 独立管理:Open Container Project会成为Linux Foundation成员项目,由委员会管理。
  3. 中立的参考实现:Docker贡献出其所基于runC的代码。
  4. 受广泛认同、支持:超过20家业界巨头共同参与、支持Open Container Project。
  5. 广泛接受新的意见和建议:由CoreOS主导的Application Container(appc)标准将与OCP整合,成为OCP项目的一员。

这一宣布对于容器技术今后发展的影响不可估量。毕竟,相对于容器具体的标准,以及这个标准由谁来定,我们更关心的是容器技术有一个统一的标准可循,这样大家可以放心参考这一标准,在容器上层做更多的,真正产生价值的创新。

在Keynote大会上信息量极大,除了最重磅的OCP,还有大量新内容发布。Solomon Hykes也是以其一贯的“哲学家”的风格,为来宾细细讲述Docker创始的初衷,长远的目标,以及为了实现这些目标将在近期发布的内容。

归根结底,Docker的使命是“创建用于超大规模创新的工具”而Solomon认为创新的最大杠杆就是互联网应用,因此,Docker将不遗余力地帮助开发者“提升整个互联网的可编程性”。Solomon提到了几个层面的目标:

  1. 不断对开发工具进行创新;
  2. 做开发者的管道工;
  3. 推动公开的标准;
  4. 帮助企业用独到的方法解决实际的问题。

围绕这些目标,Docker在本次大会上发布了一系列新产品和功能。

  1. 全新的容器网络 (Docker Network):自并购SocketPlane后,两个团队马不停蹄地将SDN与Docker容器进行集成,重写了整个网络模块,并将其从Docker代码中剥离出来。新的Docker网络有几个重大的改动:a)Docker将原生支持跨主机连接;b)应用内部可定义多个容器网络,相互之间可实现隔离;c)支持基于DNS的服务发现机制,d)已经有11个网络后端的插件,今后会支持更多。
  2. 全新的插件框架(Docker Plugins):用户可以在保持完整的Docker体验的同时,通过不同插件来自定义某方面功能,并不影响与其他支持Docker工具的兼容性。同时,在多租户环境下,不同容器可以使用不同插件来适应各个场景的需求。目前已有的插件覆盖网络、存储、调度、服务发现等各个方面。
  3. 试验性发布,每日更新:为了更高效、快速地采纳来自社区的建议,并加快迭代速度,Docker推出“Docker试验性发布”(Docker Experimental Releases),实现每日更新。
  4. Docker Plumbing Project:为了更有效、重复使用Docker某些基础功能层面的模块,Docker推出“Docker Plumbing Project”,会对Docker代码做重构,剥离一些可以独立使用的模块,反馈到社区,用于Docker以外的项目。
  5. Notary:Docker对安全模块进行重构,剥离出了名为Notary的独立项目,用于解决互联网内容发布的安全性。该项目不局限于容器应用,但在容器场景下可对镜像源认证、镜像完整性等安全需求提供很好的支持。
  6. runC:Docker对基本容器实现进行重构,剥离出了最底层的容器运行时runC。在架构层面,Docker本身基于这个模块,但runC对于Docker没有任何依赖。更重要的是,Docker将runC贡献给了随后发布的OCP项目,形成了该开放性容器运行时标准的基石。

第一天的Keynote,我们看到了一个更加开放的Docker,他将拥抱更多的厂商共建生态,尤其是OCP(Open Container Project)项目的诞生,相信未来社区和生态圈合作伙伴将受益于这个开放式的标准。

 

作者简介

陈恺,2015年正式加盟灵雀云创业团队,任首席技术官。携其十数年大规模、企业级分布式系统/云平台研发经验,打造基于容器技术、面向开发者的云计算平台。加入灵雀云之前,2004年在微软从事Windows操作系统内核(Kernel)的研发,2010年出任微软云平台Windows Azure首席架构师/软件开发部经理,专注于云计算/分布式系统的研发,组建、带领团队开发Azure最核心的中控系统(Fabric Controller),管理并支撑整个云平台后端,承载千万级规模应用。