在 Debian 12 上安装 containerd(容器运行时)是部署 Kubernetes 或独立容器环境的关键步骤。以下是详细的操作指南:
1. 安装 containerd
方法一:通过 apt 安装(推荐)
# 更新系统包索引
sudo apt-get update
# 安装必要的依赖
sudo apt-get install -y curl gnupg2 software-properties-common
# 添加 containerd 官方仓库
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新并安装 containerd
sudo apt-get update
sudo apt-get install -y containerd.io
方法二:手动安装二进制文件
适用于离线环境或需要指定版本:
# 下载 containerd 二进制文件(以最新版本为例)
wget https://github.com/containerd/containerd/releases/download/v1.6.22/containerd-1.6.22-linux-amd64.tar.gz
# 解压并部署到系统路径
sudo tar Cxzxf /usr/local containerd-1.6.22-linux-amd64.tar.gz
# 安装 runc(containerd 依赖)
wget https://github.com/opencontainers/runc/releases/download/v1.1.11/runc.amd64
sudo install -m 755 runc.amd64 /usr/local/sbin/runc
# 安装 CNI 插件(可选,容器网络依赖)
wget https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz
sudo mkdir -p /opt/cni/bin
sudo tar Cxzxf /opt/cni/bin cni-plugins-linux-amd64-v1.3.0.tgz
2. 配置 containerd
生成默认配置文件
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
修改关键配置
- 使用 systemd 驱动(Kubernetes 推荐):
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
- 设置镜像加速器(国内用户建议配置):
在sudo nano /etc/containerd/config.toml
plugins."io.containerd.grpc.v1.cri".registry.mirrors
部分添加:[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://<your-mirror-url>"] # 替换为阿里云、华为云等加速地址
重启 containerd 服务
sudo systemctl restart containerd
3. 验证安装
# 检查服务状态
sudo systemctl status containerd
# 查看 containerd 版本
containerd --version # 输出应类似: containerd github.com/containerd/containerd v1.6.22 ...
# 测试运行一个容器(需配合 CRI CLI 工具如 'crictl')
sudo ctr images pull docker.io/library/ubuntu:latest
sudo ctr run docker.io/library/ubuntu:latest demo --rm bash -c "echo 'Hello from containerd'"
4. 配置开机启动
sudo systemctl enable containerd
5. 可选:安装 CRI CLI 工具(crictl)
用于管理容器和镜像(调试时常用):
# 下载 crictl
VERSION="v1.24.0" # 根据需要替换版本
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.24.0/crictl-v1.24.0-linux-amd64.tar.gz
# 解压并部署
sudo tar zxpf crictl-v1.24.0-linux-amd64.tar.gz -C /usr/local/bin
rm -f crictl-v1.24.0-linux-amd64.tar.gz
# 配置 crictl
echo 'runtime-endpoint: unix:///run/containerd/containerd.sock' | sudo tee /etc/crictl.yaml
6. 常见问题排查
问题1:containerd 启动失败
- 原因:配置文件语法错误或与其他容器运行时(如 Docker)冲突。
- 解决:
# 检查日志 journalctl -u containerd -n 100 # 若冲突,停止并禁用 Docker sudo systemctl stop docker sudo systemctl disable docker
问题2:无法拉取镜像
- 原因:未配置镜像加速器或网络问题。
- 解决:
# 确保配置文件中的 registry 配置正确 sudo nano /etc/containerd/config.toml # 重启 containerd sudo systemctl restart containerd
问题3:cgroup 驱动不一致(Kubernetes 场景)
- 现象:Kubernetes 节点报错
failed to create the containerd task: invalid argument
。 - 解决:
添加以下内容:# 确保 containerd 和 kubelet 使用相同 cgroup 驱动(systemd 或 cgroupfs) sudo systemctl edit containerd
[Service] Environment="GOMAXPROCS=$(nproc)" "containerd_config_override_cgroup_driver=systemd"
7. 与 Docker 的关系
- containerd 是 Docker 的底层运行时:Docker 通过 containerd 管理容器生命周期。
- 直接使用 containerd:
- 更轻量(无需 Docker Engine)。
- Kubernetes 推荐使用 containerd 作为 CRI(容器运行时接口)。
- 卸载 Docker(可选):
sudo apt-get purge -y docker docker-engine docker.io containerd runc
8. 生产环境配置建议
- 存储驱动:
- 默认使用
overlay2
(需文件系统支持,如 ext4)。 - 高性能场景可配置
btrfs
或zfs
(需专用磁盘分区)。
- 默认使用
- 日志级别:
修改sudo nano /etc/containerd/config.toml
log_level = "info"
为log_level = "debug"
以启用调试日志。 - 多租户隔离:
使用containerd-shim
和命名空间(Namespace)实现容器隔离。
9. 适用场景
场景 | 推荐配置 |
---|---|
个人开发/测试环境 | 使用默认配置即可;搭配 nerdctl 体验容器管理(无需 Docker CLI) |
Kubernetes 生产集群 | 启用 systemd 驱动,配置镜像加速器,关闭 Swap 分区 |
边缘设备(ARM 架构) | 下载 containerd-xxx-linux-arm64.tar.gz 并手动安装 |
企业私有云 | 配置私有镜像仓库和安全策略(如 TLS 认证、SELinux/AppArmor) |
10. 参考资料
- 官方文档:https://containerd.io/docs/
- Kubernetes 集成指南:https://kubernetes.io/docs/setup/cri/
- 镜像加速器配置:https://github.com/AliyunContainerService/cri-tools
如果需要进一步集成 Kubernetes 或配置高级功能(如 GPU 支持),请告诉我具体需求,我会提供针对性方案!