容器界大事件:深度解析 containerd

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 美国时间12月14日,Docker公司宣布将containerd从Docker Engine中分离,并捐赠到一个新的开源社区独立发展和运营,阿里云,AWS, Google,IBM和Microsoft作为初始成员,会为项目提供贡献和维护人员。

美国时间12月14日,Docker公司宣布将containerd从Docker Engine中分离,并捐赠到一个新的开源社区独立发展和运营,"一个工业标准的容器运行时,注重简单、 健壮性、可移植性"。containerd可以作为daemon程序运行在Linux和Windows上,管理机器上所有容器的生命周期。阿里云,AWS, Google,IBM和Microsoft作为初始成员,会为项目提供贡献和维护人员。

containerd对于很多人来还是很陌生,为什么Docker公司会大张旗鼓地宣布这个开源项目,并得到了业界巨大的反响。

实际上早在16年3月,Docker 1.11的Docker Engine里就包含了containerd,而现在则是把containerd从Docker Engine里彻底剥离出来,作为一个独立的开源项目独立发展,目标是提供一个更加开放、稳定的容器运行基础设施。和原先包含在Docker Engine里containerd相比,独立的containerd将具有更多的功能,可以涵盖整个容器运行时管理的所有需求。

containerd并不是直接面向最终用户的,而是主要用于集成到更上层的系统里,比如Swarm, Kubernetes, Mesos等容器编排系统。containerd以Daemon的形式运行在系统上,通过unix domain docket暴露很低层的gRPC API,上层系统可以通过这些API管理机器上的容器。每个containerd只负责一台机器,Pull镜像,对容器的操作(启动、停止等),网络,存储都是由containerd完成。具体运行容器由runC负责,实际上只要是符合OCI规范的容器都可以支持。

containerd

这对于社区和整个Docker生态来说是一件好事。对于Docker社区的开发者来说,独立的containerd更简单清晰,基于containerd增加新特性也会比以前容易。

对于容器编排服务来说,运行时只需要使用containerd+runC,更加轻量,容易管理。而独立之后containerd的特性演进可以和Docker Engine分开,专注容器运行时管理,可以更稳定。在向后兼容上也可以做的更好,containerd第一个正式版本1.0 Release之后将提供一年的支持,包括安全更新和Bugfix,而每次升级也会向后兼容一个小版本。

Docker为了表示对于社区和生态的诚意,特意强调了containerd中立的地位,符合各方利益。可以预见containerd将成为Docker平台的一块重要组件。阿里云, AWS, Google,IBM和Microsoft将参与到containerd的开发中。

为了让大家更好的理解containerd的功能和架构,下面我们从更细节的角度看看containerd。

架构


containerd architecture

这里是containerd的架构图。中间这一层里包含了三个子系统,从这里可以看出containerd支持哪些能力

  • Distribution: 和Docker Registry打交道,拉取镜像
  • Bundle: 管理本地磁盘上面镜像的子系统。
  • Runtime:创建容器、管理容器的子系统。

可以看出containerd非常的干净,提供的都是运行时真正需要的功能。

特性和路线图


  • 支持OCI镜像
  • 支持OCI运行时(runC)
  • 支持镜像的pull/push操作
  • 容器运行时和生命周期管理
  • 网络原语:创建/修改/删除接口
  • 让容器加入已有的Network Namespace
  • 使用“内容可寻址”存储支持全局镜像多租户共享

containerd当前版本是0.2.4,是从Docker Engine剥离的一个功能子集。当功能覆盖前面的特性列表时,containerd版本更新到1.0,之后会保证API的稳定性,并提供1年的LTS.

containerd和Docker Engine之间的关系


Docker Engine包含containerd,containerd专注于运行时的容器管理,而Docker除了容器管理之外还可以完成镜像构建之类的功能。

containerd提供的API偏底层,不是给普通用户直接用的。对于普通用户来说,可以继续使用Docker。容器编排系统的开发者才需要containerd,比如阿里云容器服务团队。

containerd,OCI和runC之间的关系


OCI是一个标准化的容器规范,包括运行时规范和镜像规范。runC是基于这个规范的一个参考实现,Docker贡献了runC的主要的代码。

从技术栈上,containerd比runC的层次更高,containerd可以使用runC启动容器,还可以下载镜像,管理网络。

containerd和容器编排系统的关系


从下图可以看出containerd在容器技术生态中的位置。对开源编排系统,Kubernetes现在直接使用Docker,将来的版本可以转而使用containerd。Mesos和其他的编排引擎也可以使用containerd而不是直接用Docker。

对云计算开发商,也可以非常方便地基于containerd提供定制化的容器网络、容器存储和编排方案。

containerd_001

总结


containerd目标是提供一个更加开放、稳定的容器运行基础设施。一方面最终客户将受益于一个稳定和良好支持的容器基础设施。另一方面,各家厂商可以利用containerd作为一个标准化、灵活的容器操作层,可以非常方便地提供定制化的网络、存储和容器编排。这对构建一个开放和健康的容器生态具有重要意义。

阿里云作为成员之一会积极参与新的开源项目,把在容器方面的探索和积淀回馈到社区中,帮助国内客户利用容器技术提升IT能力实现业务创新。

想了解更多阿里云容器服务内容,请访问 https://www.aliyun.com/product/containerservicearchitecture.png
附Docker官方新闻稿https://www.docker.com/docker-news-and-press/docker-extracts-and-donates-containerd-its-core-container-runtime-accelerate

目录
相关文章
|
9天前
|
存储 开发框架 开发者
QT C++焦点事件:多角度解析实用技巧与方法
QT C++焦点事件:多角度解析实用技巧与方法
92 0
|
2月前
|
Web App开发 前端开发
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
143 0
|
4天前
|
存储 安全 编译器
【C++ 17 泛型容器对比】C++ 深度解析:std::any 与 std::variant 的细微差别
【C++ 17 泛型容器对比】C++ 深度解析:std::any 与 std::variant 的细微差别
37 1
|
9天前
|
测试技术 数据库 C++
Qt C++拖放事件探索之旅:多方法深入解析
Qt C++拖放事件探索之旅:多方法深入解析
99 1
|
10天前
|
存储 缓存 调度
C++关联容器深度解析:提升数据结构操作的艺术
C++关联容器深度解析:提升数据结构操作的艺术
70 0
|
10天前
|
安全 算法 调度
C++队列探秘:队列容器的使用技巧与实战案例解析
C++队列探秘:队列容器的使用技巧与实战案例解析
119 0
|
1月前
|
运维 Java Linux
深入解析:使用Docker容器化技术提升Java应用的部署效率
在快速迭代的软件开发周期中,如何保证应用的快速、一致和可靠部署成为了开发团队需要面对的重大挑战。本文将探讨如何利用Docker容器化技术,结合Java应用,实现高效、一致的部署流程。我们将从Docker的基本概念出发,详细介绍将Java应用容器化的步骤,包括创建Dockerfile、构建镜像以及运行容器等关键环节,并通过示例代码加以说明。此外,本文还将讨论在使用Docker部署Java应用时可能遇到的常见问题及其解决策略,旨在为读者提供一种提升部署效率、优化开发流程的有效方法。
295 2
|
2月前
|
存储 Kubernetes Docker
Docker容器编排技术解析
Docker容器编排技术解析
153 0
|
15天前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
16天前
|
Oracle 关系型数据库 数据库

相关产品

  • 容器镜像服务
  • 容器服务Kubernetes版
  • 推荐镜像

    更多