Docker 开源容器运行时组件 Containerd

  • 薛命灯

2017 年 1 月 2 日

话题:语言 & 开发架构运维

不久前,Docker宣布开源他们的容器运行时组件Containerd(发音是 container-D)。目前的 Containerd 版本是 0.2.4,Docker 计划在 2017 年第二季度基于 Open Container Initiative(OCI)发布 1.0 版本。

Containerd 是一个容器运行时组件,它原本是 Docker 平台的一部分,虽然小巧,但在整个系统里起到很关键的作用。Containerd 被设计成一种低耦合并且很容易与其它工具集成的组件。它在 Docker 1.12 里所处的位置如下图所示:

从图中可以看出,Containerd 提供了一组运行容器的 API。Docker 引擎通过调用 GRPC API 来启动执行进程,随后会启动管理器和执行器来负责监控和运行容器。容器最后通过runC来运行,runC 也是 Docker 的另一个开源项目,它实现了OCI 运行时标准

计划中的 Containerd 1.0 版本将会有所变化,它在 Docker 中的位置将会是如下图所示的样子:

新版的 Containerd 将包含如下特性:

  • 一个分布式的组件,它负责处理到注册中心的推送,无需与特定厂商关联。
  • 一组网络原语,用来创建系统接口和 API,以便管理容器的网络命名空间。
  • 主机级别的镜像和容器文件系统存储。
  • 一组 GRPC API。
  • Prometheus格式的度量指标 API,用在内部和容器级别的度量指标上。
  • 完全支持 OCI 镜像和 runC 的参考实现。

关于 Containerd 的更多架构细节可以参看GitHub主页的内容。

Containerd 是 Docker 开源的众多项目中的新成员,这些项目包括 libcontainer、libnetwork、notary、runC、HyperKit、VPNkit、Datakit、swarmkit 和 Infrakit 等。

此次开源 Containerd,Docker 是希望能够与广大社区和其它各大厂商巨头共同构建一个双赢的结果。正如 Docker CTO Solomon Hykes 所说的那样,“我们迫不及待地要把这个东西贡献出来,因为我们也会因此获得很好的回报,这是一种良性的回馈闭环,这个闭环里的各方都会从中受益”。基于 Containerd,企业可以构建自己的容器管理软件。目前,阿里巴巴、Amazon、Google、Microsoft 和 IBM 等公司的员工已经加入到该项目的贡献者行列。而随着该项目的不断完善,Docker 也将因此得到好处。

为了避免 Containerd 与 Docker 或其它商业实体存在关联,Docke 计划明年把 Containerd 独立出来,并交由中立基金进行管理。


感谢木环对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注 我们。

语言 & 开发架构运维