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

  • 陈恺

2015 年 6 月 23 日

话题:语言 & 开发文化 & 方法容器

美国时间 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),管理并支撑整个云平台后端,承载千万级规模应用。

语言 & 开发文化 & 方法容器