离线安装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

 

posted @ 2026-07-30 10:20  民工黑猫  阅读(18)  评论(0)    收藏  举报