CentOS 7 安装 containerd 详细教程(2025最新版)
一、环境准备:打好基础是关键
1. 系统更新与依赖安装
# 更新系统软件包至最新版本(提升系统安全性)
sudo yum update -y
# 安装 containerd 运行所需依赖(存储驱动支持)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
小贴士:
device-mapper-persistent-data
和lvm2
是容器存储驱动(如 Device Mapper)的核心依赖yum-utils
包含软件包管理工具,用于后续添加镜像源
2. (可选)关闭防火墙(测试环境推荐)
# 临时停止防火墙服务(仅限测试环境)
sudo systemctl stop firewalld
# 禁用防火墙开机自启(生产环境请谨慎操作)
sudo systemctl disable firewalld
二、配置国内镜像源:加速下载神器
使用阿里云 Docker CE 仓库(推荐)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
说明:
- 阿里云镜像源可显著提升软件包下载速度(尤其适合国内用户)
- 生产环境建议使用官方源:将
http://mirrors.aliyun.com
替换为https://download.docker.com
三、安装 containerd:一步到位
# 安装 containerd.io 软件包(核心组件)
sudo yum install -y containerd.io
验证安装:
containerd --version
# 输出示例:containerd github.com/containerd/containerd v1.7.2 (请以实际输出为准)
四、配置 containerd:细节决定成败
1. 生成默认配置文件
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
2. 修改 cgroup 驱动(Kubernetes 集成必备)
# 将 SystemdCgroup 设置为 true(与 kubelet 保持一致)
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
重要性:
- Kubernetes 要求容器运行时与 kubelet 使用相同的 cgroup 驱动(systemd 或 cgroupfs)
- 配置错误可能导致 Pod 启动失败或资源监控异常
3. 重启服务使配置生效
sudo systemctl restart containerd
五、启动与自启管理:确保服务稳定运行
# 设置开机自启并立即启动服务
sudo systemctl enable --now containerd
# 查看服务状态(确认运行状态)
systemctl status containerd
预期输出:
● containerd.service - containerd container runtime
Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2025-08-27 10:00:00 CST; 10s ago
Docs: https://containerd.io
Main PID: 1234 (containerd)
Tasks: 8
CGroup: /system.slice/containerd.service
└─1234 /usr/bin/containerd
六、实操案例:从零开始管理容器
1. 拉取镜像(以 Nginx 为例)
sudo ctr images pull docker.io/library/nginx:latest
验证镜像列表:
sudo ctr images ls
输出示例:
REF TYPE DIGEST SIZE PLATFORMS LOADED
docker.io/library/nginx:latest application/vnd.docker.distribution.manifest.v2+json sha256:a1e34c4... 142 MB linux/amd64 true
2. 启动容器(两种方式任选)
方式一:使用宿主机网络(简化测试)
sudo ctr run -d --net-host docker.io/library/nginx:latest nginx-test
方式二:使用挂载(生产环境推荐)
sudo ctr run -d --net-host \
--mount type=bind,src=/data/nginx,dst=/usr/share/nginx/html,options=rbind:Z \
docker.io/library/nginx:latest nginx-test
参数说明:
--net-host
:直接使用宿主机网络命名空间(简化测试环境配置)--mount
:实现宿主机与容器数据持久化存储- 生产环境建议配合 CNI 插件(如 Flannel、Calico)管理网络
3. 常用操作命令(收藏备用)
查看运行中的容器:
sudo ctr containers list
进入容器交互界面:
sudo ctr tasks exec -t --exec-id sh1 nginx-test sh
停止并删除容器:
sudo ctr tasks kill -s SIGKILL nginx-test
sudo ctr containers delete nginx-test
删除镜像:
sudo ctr images rm docker.io/library/nginx:latest
七、常见问题排查:快速定位故障
1. 服务启动失败
# 查看详细日志(定位错误原因)
journalctl -u containerd.service -n 100 --no-pager
常见原因:
- 配置文件语法错误(如
config.toml
中的逗号或引号缺失) - 端口冲突(检查
8080
等端口是否被占用) - 依赖缺失(如未安装
containerd.io
或相关库文件)
2. 镜像拉取失败
# 检查网络连通性(替换为实际镜像地址)
ping mirrors.aliyun.com
# 尝试手动拉取镜像(测试镜像源可用性)
sudo ctr images pull docker.io/library/nginx:latest
常见原因:
- 镜像源地址配置错误(如阿里云镜像源 URL 拼写错误)
- DNS 解析失败(检查
/etc/resolv.conf
配置) - 镜像标签不存在(如
latest
标签被删除或未发布)
3. 容器无法启动
# 检查容器日志(定位启动错误)
sudo ctr tasks logs nginx-test
# 查看容器配置(确认参数是否正确)
sudo ctr containers inspect nginx-test
常见原因:
- 挂载路径不存在(如
/data/nginx
未创建) - 资源限制不足(如内存或 CPU 配额过低)
- 镜像与容器运行时版本不兼容(如使用过旧的 containerd 版本)
评论区