Containerd是一个开源的容器运行时,由Docker公司于2017年捐赠给了Cloud Native Computing Foundation (CNCF),成为CNCF的顶级项目之一。它提供了一个稳定、可移植的基础架构来管理容器的生命周期,包括镜像管理、容器执行和存储管理等功能。
Containerd以一个守护进程的形式存在,使用runc或者其他符合OCI标注标准的运行时进行容器管理。
Containerd与Docker都是容器技术的重要组成部分,来看看他们有哪些差异:
虽然Containerd与Docker之间存在差异,但是它们并不是互相排斥的关系。事实上,Docker可以使用Containerd作为后端来管理容器生命周期,而Containerd也可以使用Docker镜像格式和API进行兼容。下图很好地说明了Containerd和Docker之间的关系:
Containerd只是docker的一个容器运行时。网络上之所以一直都有"docker不行了"的言论,是因为kuberntes弃用了dockershim,采用了CRI(Container Runtime Interface)即容器运行时接口,而Kubernetes目前已经成为云原生领域容器编排事实上的标准。随着容器技术的不断发展,Containerd在轻量化、安全性、可移植性等方面的优势越来越明显,未来有可能成为最广泛的容器运行时选择。
所以说Containerd不适合和Docker进行比较,因为不是完全同个层面的东西。Containerd应该与CRI-O进行比较(下一期专门讲一下这两个容器进行时的比较。)
安装依赖软件包 Containerd需要依赖cgroup、systemd和iptables等软件包,可以使用以下命令进行安装:
sudo apt-get update
sudo apt-get install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates lsb-release
添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加Docker官方APT源 根据操作系统版本添加以下APT源:
# Ubuntu 20.04 (Focal)
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu focal stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Ubuntu 18.04 (Bionic)
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu bionic stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Ubuntu 16.04 (Xenial)
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu xenial stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装Containerd 使用以下命令安装Containerd:
sudo apt-get update
sudo apt-get install -y containerd.io
配置Containerd
在配置文件/etc/containerd/config.toml
中添加以下内容:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
...
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
重新加载Containerd配置并启动服务 使用以下命令重新加载配置文件并启动Containerd服务:
sudo systemctl daemon-reload
sudo systemctl restart containerd
验证Containerd安装是否成功 运行以下命令验证Containerd是否已成功安装:
sudo ctr version
输出应为:
codeClient:
Version: 1.5.5
Revision: 09a19cb71a40ac5ab8686245e5a5fb5e5d25c144
...
Server:
Version: 1.5.5
Revision: 09a19cb71a40ac5ab8686245e5a5fb5e5d25c144
...
以上就是在Linux系统中安装和部署Containerd的步骤,在安装和部署完成后,可以使用CLI命令或者API接口来管理容器和镜像,例如:
# 拉取一个镜像
containerd ctr image pull docker.io/library/nginx:latest
# 创建并启动一个容器
containerd ctr run --rm docker.io/library/nginx:latest mynginx
# 停止并删除一个容器
containerd ctr stop mynginx
containerd ctr container rm mynginx
Containerd还提供了CRI插件,可以用于Kubernetes集群中的容器运行时。在Kubernetes中使用Containerd作为容器运行时的安装和配置可以参考:https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd