离线安装containerd-2.3.3及nerdctl(全平台兼容)
一,安装containerd
1,下载containerd的安装必备文件
https://github.com/containerd/containerd/releases/download/v2.3.3/containerd-2.3.3-linux-amd64.tar.gz
https://github.com/opencontainers/runc/releases/download/v1.2.4/runc.amd64
https://github.com/containernetworking/plugins/releases/download/v1.6.0/cni-plugins-linux-amd64-v1.6.0.tgz
https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
下载后的文件清单:
containerd-2.3.3-linux-amd64.tar.gz # 主程序包 runc.amd64 # 容器runtime cni-plugins-linux-amd64-v1.6.0.tgz # 网络插件 containerd.service # systemd服务单元文件
将四个离线包copy到k8s的所有节点
2,安装containerd
tar -zxvf containerd-2.3.3-linux-amd64.tar.gz -C /usr/local # 验证二进制文件存在 ls /usr/local/bin/containerd /usr/local/bin/ctr # 输出版本校验 containerd --version ctr version
3,离线安装 runc(必须,容器运行依赖)
# 部署runc到系统sbin install -m 755 runc.amd64 /usr/local/sbin/runc # 校验 runc --version
4,离线安装 CNI 插件(K8s/Calico/Ingress 网络必需)
# 创建CNI目录 mkdir -p /opt/cni/bin # 解压插件二进制 tar -zxvf cni-plugins-linux-amd64-v1.6.0.tgz -C /opt/cni/bin chmod +x /opt/cni/bin/* ls /opt/cni/bin
5,部署 containerd systemd 服务文件
# 将服务文件放入系统服务目录 cp containerd.service /etc/systemd/system/ # 设置开机自启
systemctl daemon-reload
systemctl enable --now containerd
systemctl status containerd
6、生成并修改 containerd 核心配置(适配 K8s/K3s 必改)
# 创建配置目录 mkdir -p /etc/containerd # 生成默认配置 containerd config default > /etc/containerd/config.toml
关键修改 2 处(直接 sed 一键替换)
# 1、开启systemd cgroup(K3s强制要求) sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml # 2、替换pause镜像为国内可离线镜像(避免拉取registry.k8s.io失败) sed -i 's|sandbox_image = "registry.k8s.io/pause:3.9"|sandbox_image = "rancher/mirrored-pause:3.6"|g' /etc/containerd/config.toml
7、启动 containerd 并验证运行状态
# 刷新缓存 systemctl daemon-reload # 启动服务 systemctl start containerd # 查看运行状态,正常显示 active (running) systemctl status containerd # 测试镜像导入功能(验证完整可用) ctr images ls ctr version # 校验连接文件 ls -l /run/containerd/containerd.sock
二,安装nerdctl-v2.3.3
1,下载nerdctl完整包:nerdctl-full(推荐离线,一步到位,自带 buildkit)
完整包下载: https://github.com/containerd/nerdctl/releases/download/v2.3.3/nerdctl-full-2.3.3-linux-amd64.tar.gz
精简包下载:https://github.com/containerd/nerdctl/releases/download/v2.3.3/nerdctl-2.3.3-linux-amd64.tar.gz
离线文件清单:
nerdctl-full-2.3.3-linux-amd64.tar.gz
nerdctl-2.3.3-linux-amd64.tar.gz
上传离线包到要安装的服务器。
2,完整包部署
# 1. 解压到系统全局 /usr/local tar -zxvf nerdctl-full-2.3.3-linux-amd64.tar.gz -C /usr/local # 2. 注册buildkit服务(离线构建镜像依赖) cp /usr/local/share/systemd/buildkit.service /etc/systemd/system/ systemctl daemon-reload systemctl enable --now buildkit # 3. 配置nerdctl默认k8s.io命名空间(关键,不用每次加 -n k8s.io) mkdir -p /etc/nerdctl cat > /etc/nerdctl/nerdctl.toml <<EOF namespace = "k8s.io" address = "/run/containerd/containerd.sock" cgroup_manager = "systemd" EOF # 4. 验证安装 nerdctl version # 查看k8s命名空间镜像(验证连通containerd) nerdctl images
3,精简包部署
tar -zxvf nerdctl-2.3.3-linux-amd64.tar.gz mv nerdctl /usr/local/bin/ chmod +x /usr/local/bin/nerdctl # 同样配置默认命名空间 mkdir -p /etc/nerdctl cat > /etc/nerdctl/nerdctl.toml <<EOF namespace = "k8s.io" address = "/run/containerd/containerd.sock" cgroup_manager = "systemd" EOF

浙公网安备 33010602011771号