写点什么

Docker 开源容器运行时组件 Containerd

2017 年 1 月 02 日

不久前,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 )关注 我们。

2017 年 1 月 02 日 18:003957
用户头像

发布了 321 篇内容, 共 112.3 次阅读, 收获喜欢 113 次。

关注

评论

发布
暂无评论
发现更多内容

Android | Tangram动态页面之路(三)使用

哈利迪

android

解决 Django 多进程下,logging 记录日志错乱问题

AlwaysBeta

Python django 编程 日志 log

写作对我的意义

Neco.W

总结 思考 写作 感悟

比AtomicLong更优秀的LongAdder确定不来了解一下吗?

一枝花算不算浪漫

并发编程 jdk源码

JAVA内存模型与线程

颇风

Java 内存模型 JVM

走进Golang之编译器原理

何磊

go golang 编译原理

如何发布一个npm包-创建,发布,更新,撤销及常见问题解决

Brave

npm

PhotoShop切图,一篇文章就够用了

cwang

Web 工具 PhotoShop

用原理认知世界,用情绪驱动行为

史方远

职场 心理 成长

汉字不能编程?别闹了,只是看着有点豪横!容易被开除!

小傅哥

spring 小傅哥 aop 汉字编程

写在开头

宋胖子

Jenkins权限管理

kcnf

游戏夜读 | Scikit-learn迎来0.21版本

game1night

《零基础学 Java》 FAQ 之 8-Java方法调用是传值还是传引用

臧萌

Java

如何用一套引擎搞定机器学习全流程?

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

Dart 进阶 | 深入理解 Function & Closure

LitaVadaski

flutter dart

如何搞定Kafka重复消费?

奈学教育

kafka kafka配置

CentOS 6 升级 glibc

wong

centos glibc

中小企业如何做运维自动化?

Spug运维

运维 spug 运维自动化 jenkins ansible

键入网址后,其间发生了什么?

小林coding

TCP 计算机网络 网络协议 IP HTTP

识别代码中的坏味道(二)

Page

Java 面向对象 复杂代码优化 重构 CleanCode

一文带你了解 HTTP 黑科技

cxuan

前端 HTTP

新mac笔记本需要做的事情

好好学习

Mac

笔记:《如何系统思考》之如何应用系统思考

wiflish

思维方式

2020第一篇技术博客

java劝退师首席大弟子

生活

Design Sprint 教你五天完成产品迭代

Yanel 说敏捷产品

产品 敏捷 设计 产品设计 团队

一想到有95%的问题还没解决,我就calm down了

赵新龙

科普 宇宙 后真相时代

英语学习中听和说的区别

七镜花园-董一凡

学习

华为“补洞”:去年重新设计超过6000万行代码

罗燕珊

华为 实体清单

谈谈控制感(6):虚幻的控制感也好用

史方远

职场 心理 成长

MySQL事务解析

一个有志气的DB

MySQL 事务隔离级别 mysql事务

云原生场景下企业API 网关选型及落地实践

云原生场景下企业API 网关选型及落地实践

Docker开源容器运行时组件Containerd-InfoQ