虽然Docker不是最早的容器技术,但却把容器技术推向了应用的高峰。从Docker中拆分而来的Containerd容器运行时,成为了CNCF毕业的第5个项目(前面4个分别是K8s、Prometheus、Envoy和CoreDNS)。本文将介绍容器技术从Docker到Containerd这一路的发展历程。
Docker的拆分
Docker 诞生于 2013 年,Docker 最开始的执行环境是 LXC(Linux Container),但从版本 0.9 开始 LXC 被 libcontainer 取代。
Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。Libcontainer 为 Docker 封装了 Linux 提供的基础功能,如 cgroups,namespaces,netlink 和 netfilter 等。
Libcontainer示意图
2016年,Docker 分拆了 Containerd,并将其捐赠给了社区。将这个组件分解为一个单独的项目,使得 Docker 将容器的管理功能移出 Docker 引擎,并移入一个单独的守护进程中,即 Containerd。
Docker拆分以后,对于整个容器技术的发展是非常有利的。容器标准成为一个开放标准,给了其他企业或组织参与的机会。拆分以后的Docker,各组件关系如下所示。
Docker与Containerd的关系