容器运行时 containerd
containerd 简介
containerd 是一个工业级、开放标准的容器运行时(Container Runtime),现已成为 Kubernetes 默认支持的核心组件之一。containerd 是一个守护进程(daemon),负责管理容器的完整生命周期。核心特性:
- 符合 OCI(Open Container Initiative)标准
- 支持 CRI(Container Runtime Interface),可直接被 Kubernetes 使用
- 轻量、稳定、高可用,专为生产环境设计
- 不包含高层功能(如构建镜像、Dockerfile 支持),只专注”运行容器”
+---------------------+
| Kubernetes |
| (via CRI) |
+----------+----------+
|
+----------v----------+ +------------------+
| containerd |<--->| containerd-shim |
+----------+----------+ +------------------+
|
+----------v----------+
| runc | ← OCI runtime(实际创建容器)
+---------------------+
| 组件 | 作用 |
|---|---|
| containerd | 主守护进程,提供 gRPC API,管理镜像、容器、任务 |
| containerd-shim | 每个容器对应一个 shim 进程,使 containerd 崩溃时容器仍运行 |
| runc | OCI 兼容的底层运行时,负责 unshare、mount、exec 等系统调用 |
| CRI Plugin | 内置于 containerd,实现 Kubernetes CRI 接口(无需额外组件) |
在生态中的位置:

containerd 安装
安装可参考文档 Getting started with containerd。也可以直接安装 docker,docker 会安装 containerd。安装 containerd 过程中会安装 runc。
sudo apt update
sudo apt install -y containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
# 确保 SystemdCgroup = true(对 Kubernetes 很重要)
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
安装后,可通过命令行 ctr 查看版本号:
root@node2:~# ctr --version
ctr github.com/containerd/containerd 1.7.28
containerd 的命令行工具:
| 名称 | 社区 | API | 用途 | 网站 |
|---|---|---|---|---|
ctr | containerd | Native | 仅用于调试 | (无,参见 ctr --help 了解用法) |
nerdctl | containerd(非核心) | Native | 通用 | https://github.com/containerd/nerdctl |
crictl | Kubernetes SIG-node | CRI | 仅用于调试 | https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md |
containerd 的配置文件:/etc/containerd/config.toml。可通过 containerd config default > /etc/containerd/config.toml 命令生成默认配置文件。