Containerd 1.7.2 离线安装与配置全指南(生产级优化)
摘要:本文详细讲解在无外网环境下部署 Containerd 1.7.2 容器运行时的完整流程,涵盖二进制包安装、私有镜像仓库配置、Systemd服务集成等关键步骤,并提供生产环境调优建议。适用于Kubernetes集群、边缘计算等隔离场景。
一、环境准备与架构设计
1.1 系统要求
项目 | 最低要求 | 推荐配置 |
---|---|---|
操作系统 | CentOS 7+/Ubuntu 18+ | CentOS 7.6+/Ubuntu 22.04 LTS |
内核版本 | ≥ 4.14 | ≥ 5.4 |
磁盘空间 | ≥ 1GB | SSD + 50GB |
架构支持 | x86_64 | ARM64(需对应包) |
二、离线安装全流程
2.1 安装包处理
# 上传并解压二进制包(所有节点执行)
mkdir -p /root/containerd
tar -zxvf containerd-1.7.2-linux-amd64.tar.gz -C /root/containerd# 复制可执行文件到系统路径
cp /root/containerd/bin/* /usr/bin/
cp /root/containerd/bin/ctr /usr/local/bin/# 验证安装
containerd --version # 应输出 containerd github.com/containerd/containerd v1.7.2
三、生产级配置调优
3.1 生成默认配置文件
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
3.2 关键配置修改
# 文件路径:/etc/containerd/config.toml# 容器数据存储路径(根据磁盘规划调整)
root = "/data/containerd" # 启用systemd cgroup驱动(必须与K8S一致)
SystemdCgroup = true# 配置私有镜像仓库(替换实际IP和端口)
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint = ["http://192.167.14.119:5000"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]endpoint = ["http://192.167.14.119:5000"]# 修改pause镜像地址(国内源)
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
四、Systemd服务集成
4.1 创建服务文件
cat > /usr/lib/systemd/system/containerd.service <<EOF
[Unit]
Description=Containerd Container Runtime
Documentation=https://containerd.io
After=network.target[Service]
ExecStartPre=/sbin/modprobe overlay
ExecStart=/usr/bin/containerd --config /etc/containerd/config.toml
Restart=always
RestartSec=5
LimitNOFILE=infinity[Install]
WantedBy=multi-user.target
EOF
4.2 服务管理命令
# 重载配置
systemctl daemon-reload# 启停服务
systemctl enable containerd --now
systemctl restart containerd# 查看状态
systemctl status containerd
五、功能验证与测试
5.1 基础功能测试
# 拉取测试镜像(使用私有仓库)
ctr image pull docker.io/library/nginx:alpine# 运行容器
ctr run -d --net-host docker.io/library/nginx:alpine nginx-test# 查看运行容器
ctr container ls
5.2 私有仓库连通性验证
ctr image pull registry.k8s.io/pause:3.9
ctr image list | grep pause
六、生产环境调优建议
6.1 存储驱动优化
# 使用 overlay2 存储驱动(需内核支持)
[plugins."io.containerd.grpc.v1.cri".containerd]snapshotter = "overlayfs"
6.2 日志配置
# 限制日志大小与保留时间
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]SystemdCgroup = true[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options.log]max_size = "100MB"max_file = 3
6.3 资源限制
# 修改服务文件限制
[Service]
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
七、故障排查指
现象 | 排查命令 | 解决方案 |
---|---|---|
服务启动失败 | journalctl -u containerd -xe | 检查配置文件语法和路径 |
镜像拉取失败 | ctr image pull -v | 验证仓库证书及网络连通性 |
容器无法创建 | ctr run --rm -t debug | 检查存储驱动和cgroup配置 |
节点资源耗尽 | df -h /data/containerd | 清理旧镜像或扩容存储 |
扩展工具推荐:
- nerdctl:Containerd的Docker兼容CLI
- crictl:K8S CRI调试工具
通过本文,您已完成Containerd的离线部署与生产级调优。建议结合Kubernetes集群验证运行时集成效果!
如果本教程帮助您解决了问题,请点赞❤️收藏⭐支持!欢迎在评论区留言交流技术细节!欲了解密码学知识,请订阅《密码学实战》专栏 → 密码学实战