容器界大事件:深度解析 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

目录
相关文章
|
25天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
58 3
|
28天前
|
安全 持续交付 Docker
深入理解并实践容器化技术——Docker 深度解析
深入理解并实践容器化技术——Docker 深度解析
53 2
|
1月前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
1月前
|
运维 持续交付 虚拟化
深入解析Docker容器化技术的核心原理
深入解析Docker容器化技术的核心原理
47 1
|
2月前
|
缓存 前端开发 JavaScript
前端的全栈之路Meteor篇(二):容器化开发环境下的meteor工程架构解析
本文详细介绍了使用Docker创建Meteor项目的准备工作与步骤,解析了容器化Meteor项目的目录结构,包括工程准备、环境配置、容器启动及项目架构分析。提供了最佳实践建议,适合初学者参考学习。项目代码已托管至GitCode,方便读者实践与交流。
|
2月前
|
存储 应用服务中间件 云计算
深入解析:云计算中的容器化技术——Docker实战指南
【10月更文挑战第14天】深入解析:云计算中的容器化技术——Docker实战指南
87 1
|
2月前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
80 0
|
16天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
155 77
|
25天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
3天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
27 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档

推荐镜像

更多