http://www.infoq.com/cn/news/2017/01/Docker-Containerd-OCI-1
不久前,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独立出来,并交由中立基金进行管理。