在Rocky 9 安装 containerd 容器运行时 + nerdctl 安装
containerd 是一个行业标准的容器运行时,专注于简单性、健壮性和可移植性。nerdctl 是一个与 Docker 兼容的 containerd 命令行客户端。
一、安装 containerd
1.1 配置 containerd 仓库
Rocky Linux 9 基于 RHEL 9,可以使用官方仓库安装 containerd:
# 安装必要的工具
sudo dnf install -y yum-utils
# 添加 Docker 仓库(包含 containerd)
sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's/\$releasever/9/g' /etc/yum.repos.d/docker-ce.repo
dnf clean all
dnf makecache
1.2 安装 containerd
# 安装 containerd
sudo dnf install -y containerd.io
1.3 配置 containerd
# 生成默认配置文件
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
# 启用 systemd cgroup 驱动(推荐)
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
1.4 启动并启用 containerd 服务
# 启动 containerd 服务
sudo systemctl start containerd
# 设置开机自启
sudo systemctl enable containerd
# 检查服务状态
sudo systemctl status containerd
1.5 验证安装
# 查看 containerd 版本
containerd --version
# 查看 containerd 信息
ctr version
二、安装 nerdctl
2.1 下载 nerdctl
nerdctl 可以从 GitHub 官方仓库下载:
# 创建下载目录
mkdir -p ~/downloads
cd ~/downloads
# 下载最新版本的 nerdctl(请根据实际版本号调整)
# 访问 https://github.com/containerd/nerdctl/releases 查看最新版本
NERDCTL_VERSION="1.3.1"
wget https://github.com/containerd/nerdctl/releases/download/v${NERDCTL_VERSION}/nerdctl-${NERDCTL_VERSION}-linux-amd64.tar.gz
# 解压
sudo tar -C /usr/local -xzf nerdctl-full-1.3.1-linux-amd64.tar.gz
#
sudo systemctl enable --now buildkit
sudo dnf install -y iptables iptables-services
2.2 验证 nerdctl 安装
# 查看 nerdctl 版本
nerdctl version
# 查看 nerdctl 信息
nerdctl info
三、基本使用
3.1 拉取镜像
# 拉取镜像(需要配置镜像加速)
nerdctl run --rm docker.1ms.run/alpine echo "Containerd is working!"
# 查看本地镜像
nerdctl images
3.2 运行容器
# 运行容器
nerdctl run -d --name nginx-test -p 8080:80 nginx:latest
# 查看运行中的容器
nerdctl ps
# 查看所有容器(包括已停止的)
nerdctl ps -a
3.3 容器管理
# 停止容器
nerdctl stop nginx-test
# 启动容器
nerdctl start nginx-test
# 重启容器
nerdctl restart nginx-test
# 删除容器
nerdctl rm nginx-test
# 删除镜像
nerdctl rmi nginx:latest
3.4 查看日志
# 查看容器日志
nerdctl logs nginx-test
# 实时查看日志
nerdctl logs -f nginx-test
四、配置镜像加速(可选)
4.1 配置 containerd 镜像加速
编辑 /etc/containerd/config.toml:
sudo vi /etc/containerd/config.toml
在 [plugins."io.containerd.grpc.v1.cri".registry] 部分添加镜像配置:
[plugins."io.containerd.grpc.v1.cri".registry]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://docker.mirrors.ustc.edu.cn", "https://registry-1.docker.io"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.cn-hangzhou.aliyuncs.com"]
endpoint = ["https://registry.cn-hangzhou.aliyuncs.com"]
重启 containerd 服务:
sudo systemctl restart containerd
4.2 配置 nerdctl 镜像加速
创建或编辑 ~/.config/nerdctl/nerdctl.toml:
mkdir -p ~/.config/nerdctl
cat > ~/.config/nerdctl/nerdctl.toml <<EOF
mirrors = {
"docker.io" = ["https://docker.mirrors.ustc.edu.cn", "https://registry-1.docker.io"]
"registry.cn-hangzhou.aliyuncs.com" = ["https://registry.cn-hangzhou.aliyuncs.com"]
}
EOF
五、常见问题排查
5.1 containerd 服务无法启动
# 查看详细日志
sudo journalctl -u containerd -f
# 检查配置文件语法
containerd config default > /tmp/config.toml
sudo containerd config verify
5.2 nerdctl 无法连接 containerd
# 检查 containerd socket 是否存在
ls -l /run/containerd/containerd.sock
# 检查 containerd 服务状态
sudo systemctl status containerd
# 检查用户权限
groups
如果权限不足,可以将用户添加到 containerd 组(如果存在):
sudo usermod -aG containerd $USER
newgrp containerd
5.3 镜像拉取失败
# 检查网络连接
ping registry-1.docker.io
# 使用 ctr 命令测试
sudo ctr images pull docker.io/library/nginx:latest
# 检查镜像加速配置
cat /etc/containerd/config.toml | grep -A 10 mirrors
六、总结
通过以上步骤,我们成功在 Rocky Linux 9 上安装了 containerd 容器运行时和 nerdctl 命令行工具。containerd 提供了稳定的容器运行时环境,而 nerdctl 提供了与 Docker 兼容的命令行接口,使得从 Docker 迁移到 containerd 变得更加容易。
主要步骤总结: 1. 安装并配置 containerd 2. 下载并安装 nerdctl 3. 配置镜像加速(可选但推荐) 4. 验证安装并测试基本功能
containerd + nerdctl 的组合为容器管理提供了一个轻量级且高效的解决方案。