目 录CONTENT

文章目录

CentOS 7 安装 containerd 详细教程(2025最新版)

Administrator
2025-08-27 / 0 评论 / 3 点赞 / 24 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2025-08-27,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

CentOS 7 安装 containerd 详细教程(2025最新版)

一、环境准备:打好基础是关键

1. 系统更新与依赖安装

# 更新系统软件包至最新版本(提升系统安全性)
sudo yum update -y

# 安装 containerd 运行所需依赖(存储驱动支持)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

小贴士

  • device-mapper-persistent-datalvm2 是容器存储驱动(如 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 版本)
3
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区