节点安装 Containerd 容器运行时

在 ubuntu/centos(amd64 或 arm64)节点上安装并配置 containerd,作为 k8s 节点的容器运行时;含 nerdctl、buildkit、CNI 插件与镜像加速/私有仓库配置

部署安装 / 节点准备
containerd容器运行时container runtimenerdctlbuildkitcni镜像加速registry mirror私有仓库sandbox_imageSystemdCgroupubuntucentosarm64amd64离线安装

节点安装 Containerd 容器运行时

本文介绍在节点上安装并配置 containerd 作为容器运行时的完整流程,覆盖 ubuntu / centos、amd64 / arm64 在线与离线安装,以及 nerdctl、buildkit、CNI 网络插件的安装与镜像加速、私有仓库配置。

说明:如果节点需要接入 GPU,请在装好 containerd 后参考 GPU 节点接入与初始化 追加 NVIDIA 运行时配置。

1. ubuntu 安装 containerd

1.1 卸载旧版本 containerd

sudo apt-get remove -y docker docker-engine docker.io containerd runc
sudo rm -rf /var/lib/docker /etc/docker/
sudo rm -rf /var/lib/containerd /etc/containerd/

1.2 ubuntu 安装 containerd

# 国内使用阿里源
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
# amd64机器
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# arm机器
sudo add-apt-repository "deb [arch=arm64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# 更新源
sudo apt-get update

# 查看版本
apt-cache madison containerd

# 安装containerd
sudo apt-get install -y containerd.io

# sudo apt-get install containerd=<VERSION>
# 例如 apt-get install containerd=1.7.20-..

# 查看运行状态
systemctl start containerd
systemctl enable containerd
systemctl status containerd

2. centos 安装 containerd

yum update -y
yum install -y yum-utils device-mapper-persistent-data lvm2

# amd64安装containerd
# 使用阿里源,arm64 版本是比较老的版本
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum update -y
yum -y install containerd.io    # 安装 1.7.20 相近版本

systemctl start containerd
systemctl enable containerd
systemctl status containerd

3. arm64 和 amd64 离线下载安装

离线包包含 nerdctl、containerd、runc,但不包含 cni。建议使用 nerdctl full 包,参考:https://github.com/containerd/nerdctl/releases

arch=arm64
rm -rf nerdctl-full-1.7.7-linux-${arch}.tar.gz
wget https://githubfast.com/containerd/nerdctl/releases/download/v1.7.7/nerdctl-full-1.7.7-linux-${arch}.tar.gz
tar xf nerdctl-full-1.7.7-linux-${arch}.tar.gz -C /usr/local
cp /usr/local/lib/systemd/system/*.service /etc/systemd/system/
# 自启动 buildkit 和 containerd 服务
systemctl enable containerd buildkit
systemctl start containerd buildkit
# 查看状态
systemctl status buildkit containerd

4. 配置 containerd

# 生成默认配置,如果已经生成了配置文件,先删除再重新生成,因为之前自带的配置文件基本是空的
mkdir /etc/containerd
containerd config default | tee /etc/containerd/config.toml

vi /etc/containerd/config.toml

需要在 /etc/containerd/config.toml 中修改/添加如下配置:

1、修改 sandbox_image 的地址

# sandbox_image = "k8s.gcr.io/pause:3.8"
# 注释上面那行,添加下面这行,注意看一下后面的版本号
sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8"

2、配置 containerd 使用 systemd 管理 cgroup

ubuntu / centos 需要配置 Containerd 直接使用 systemd 去管理 cgroup,而不是直接使用 cgroupfs:

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
  # 修改下面这行
  SystemdCgroup = true

3、添加镜像源,拉取 dockerhub 镜像

[plugins."io.containerd.grpc.v1.cri".registry]   # 此行下修改
  config_path = "/etc/containerd/certs.d"        # 改为此路径,并在每个路径下创建 hosts.toml 文件,存放镜像加速信息

创建 /etc/containerd/certs.d 下的 hosts 文件:

mkdir -p /etc/containerd/certs.d/docker.io

tee /etc/containerd/certs.d/docker.io/hosts.toml << 'EOF'
server = "https://docker.io"
[host."https://docker.1panel.live"]
  capabilities = ["pull", "resolve"]
[host."https://hub.rat.dev/"]
  capabilities = ["pull", "resolve"]
[host."https://docker.chenby.cn"]
  capabilities = ["pull", "resolve"]
[host."https://docker.m.daocloud.io"]
  capabilities = ["pull", "resolve"]
EOF

4、配置私有镜像仓库

只需给 config_path 添加对应的地址(注意与上一步保持一致,统一为 /etc/containerd/certs.d,源文件 install/kubernetes/rancher/install_containerd.md:123 此处误写为 cert.d,少了一个 s,两处不一致会导致镜像加速/私有仓库配置不生效):

[plugins."io.containerd.grpc.v1.cri".registry]
  config_path = "/etc/containerd/certs.d"
# ip写成自己内网仓库的ip
mkdir -p /etc/containerd/certs.d/172.17.0.4:88
tee /etc/containerd/certs.d/172.17.0.4:88/hosts.toml << 'EOF'
server = "http://172.17.0.4:88"

[host."http://172.17.0.4:88"]
  capabilities = ["pull", "resolve", "push"]
  skip_verify = true
EOF
# 重启配置生效
systemctl daemon-reload
systemctl restart containerd

5. 安装 nerdctl

首先查看 containerd 与 nerdctl 的对应关系,下载对应的版本。查看下面地址的 “Compatible containerd versions” 部分,确认对应的 containerd 版本并获取下载地址:https://github.com/containerd/nerdctl/releases

比如这里查到适用的 nerdctl 版本是 version=1.7.6,那么 nerdctl 的下载地址如下:

version=1.7.6

# amd64版本
wget https://githubfast.com/containerd/nerdctl/releases/download/v${version}/nerdctl-${version}-linux-amd64.tar.gz
tar zxvf nerdctl-${version}-linux-amd64.tar.gz -C /usr/local/bin

# arm64版本
wget https://githubfast.com/containerd/nerdctl/releases/download/v${version}/nerdctl-${version}-linux-arm64.tar.gz
tar zxvf nerdctl-${version}-linux-arm64.tar.gz -C /usr/local/bin

也可以直接在页面上找到相应版本,复制链接下载。

配置 nerdctl:

mkdir -p /etc/nerdctl/
cat > /etc/nerdctl/nerdctl.toml << 'EOF'
namespace      = "k8s.io"
insecure_registry = true
EOF

6. 安装构建器 buildkit

首先查看 containerd 与 buildkit 的对应关系,下载对应的版本。获取下载地址:https://github.com/moby/buildkit/releases

version=v0.15.1

# amd64版本
wget https://githubfast.com/moby/buildkit/releases/download/${version}/buildkit-${version}.linux-amd64.tar.gz
tar zxvf buildkit-${version}.linux-amd64.tar.gz -C /usr/local/

# arm64版本
wget https://githubfast.com/moby/buildkit/releases/download/${version}/buildkit-${version}.linux-arm64.tar.gz
tar zxvf buildkit-${version}.linux-arm64.tar.gz -C /usr/local/

编辑 /etc/systemd/system/buildkit.service,内容如下:

[Unit]
Description=BuildKit
Documentation=https://github.com/moby/buildkit

[Service]
ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true

[Install]
WantedBy=multi-user.target
# 启动
systemctl enable buildkit

7. 安装 CNI 网络插件

# 创建目录
mkdir -p /opt/cni/bin /etc/cni/net.d/

# 下载 CNI 插件 amd,可能网络问题下载失败,记得删除旧文件,重新下载几次
wget https://githubfast.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
# wget https://cube-studio.oss-cn-hangzhou.aliyuncs.com/install/containerd/cni-plugins-linux-amd64-v1.1.1.tgz
tar -C /opt/cni/bin -xzvf cni-plugins-linux-amd64-v1.1.1.tgz

# 下载 CNI 插件 arm
wget https://githubfast.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-arm64-v1.1.1.tgz
tar -C /opt/cni/bin -xzvf cni-plugins-linux-arm64-v1.1.1.tgz

修正 containerd 的配置 vi /etc/containerd/config.toml

[plugins."io.containerd.grpc.v1.cri".cni]
  # ConfDir is the directory to search CNI config files
  conf_dir = "/etc/cni/net.d"
  # BinDir is the directory to search CNI plugin binaries
  bin_dir = "/opt/cni/bin"
# 重启配置生效
systemctl daemon-reload
systemctl restart containerd

8. 注意事项

1、如果镜像源没有生效,那在拉取 dockerhub 镜像的前面加上 docker.anyhub.us.kg/library/

例如:

# 原本拉取
nerdctl pull nginx
# 本质拉取的是
nerdctl pull docker.io/library/nginx
# 替换为
nerdctl pull docker.anyhub.us.kg/library/nginx

说明:文中的 githubfast.com 镜像加速域名、各 dockerhub 加速地址、containerd/nerdctl/buildkit/cni 的具体版本号均为安装时的示例,可能随网络环境与上游发布变化,请以官方 releases 页面为准。

最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki