如标题的错误,还有一个是:
containerd config default > /etc/containerd/config.toml
WARN[0000] init error, wrong runtimeTimeout format: time: invalid duration ""
都是检查containerd版本的时候报错的。
原因是containerd的版本与docker版本不一致,不在受支持的范围内。

以上适配性仅供参考。
wget https://github.com/containerd/containerd/releases/download/v1.6.28/containerd-1.6.28-linux-arm64.tar.gz
# 安装系统原生containerd(1.2.0),保证依赖完整
yum install -y containerd-1.2.0-209.p08.ky10.aarch64
# 停止服务(避免文件占用)
systemctl stop containerd docker
pkill -9 containerd containerd-shim
# 解压包
tar zxf containerd-1.6.28-linux-arm64.tar.gz
# 覆盖系统二进制文件(核心步骤)
cp -rf bin/* /usr/bin/
chmod +x /usr/bin/containerd* /usr/bin/ctr
# 验证版本(关键)
containerd --version
# 正确输出:containerd github.com/containerd/containerd v1.6.28 ... (linux/arm64)
# 生成1.6.28默认配置(修复runtimeTimeout错误)
containerd config default > /etc/containerd/config.toml
通过以上方式,更新完毕,但是到最后一步,如果不是你安装的版本,那就继续执行下面的吧。
# 1. 停止所有相关服务,避免文件被占用
systemctl stop containerd docker
pkill -9 containerd containerd-shim ctr
# 2. 备份并删除所有旧版本文件(关键,覆盖所有路径)
# 处理 /usr/bin/ 路径
mv /usr/bin/containerd /usr/bin/containerd.old
mv /usr/bin/containerd-shim /usr/bin/containerd-shim.old
mv /usr/bin/containerd-stress /usr/bin/containerd-stress.old
mv /usr/bin/containerd-shim-runc-v1 /usr/bin/containerd-shim-runc-v1.old
mv /usr/bin/containerd-shim-runc-v2 /usr/bin/containerd-shim-runc-v2.old
# 处理 /usr/local/bin/ 路径(重点!)
mv /usr/local/bin/containerd /usr/local/bin/containerd.old
mv /usr/local/bin/containerd-shim /usr/local/bin/containerd-shim.old
# 3. 清空命令缓存(Linux 会缓存命令路径,必须清空)
hash -r
# 进入包所在目录
cd /home/wolf
# 1. 覆盖 /usr/bin/ 路径(系统默认优先路径)
cp -rf bin/* /usr/bin/
# 2. 覆盖 /usr/local/bin/ 路径(清理残留)
cp -rf bin/* /usr/local/bin/
# 3. 覆盖 /usr/sbin/ 路径(麒麟系统备用路径)
cp -rf bin/* /usr/sbin/ 2>/dev/null
# 4. 赋予所有文件可执行权限
chmod +x /usr/bin/containerd* /usr/bin/ctr
chmod +x /usr/local/bin/containerd* /usr/local/bin/ctr
chmod +x /usr/sbin/containerd* /usr/sbin/ctr 2>/dev/null
# 1. 删除旧的错误配置,重新生成 1.6.28 配置
rm -rf /etc/containerd/config.toml
containerd config default > /etc/containerd/config.toml
# 2. 验证 runtimeTimeout 配置正确
grep -i runtimeTimeout /etc/containerd/config.toml
# 输出:runtimeTimeout = "2m0s" → 正确
# 3. 验证 containerd 版本(核心!)
containerd --version
# 正确输出:containerd github.com/containerd/containerd v1.6.28 ... (linux/arm64)
# 若仍显示旧版本,执行以下命令强制指定路径:
# /usr/bin/containerd --version
通过以上方式可行,但是最后初始化配置文件的时候,可能会提示:containerd config default > /etc/containerd/config.toml
bash: /etc/containerd/config.toml: 没有那个文件或目录
# 1. 创建 /etc/containerd 目录(权限设为 root)
mkdir -p /etc/containerd
chmod 755 /etc/containerd
chown root:root /etc/containerd
# 2. 重新生成 1.6.28 版本的默认配置
containerd config default > /etc/containerd/config.toml
# 3. 验证配置文件已生成且内容正确
ls -lh /etc/containerd/config.toml
# 输出:-rw-r--r-- 1 root root xxK 2月 28 xx:xx /etc/containerd/config.toml
# 4. 检查 runtimeTimeout 配置(确保无格式错误)
grep -i runtimeTimeout /etc/containerd/config.toml
# 正常输出:runtimeTimeout = "2m0s"
至此,终于是升级成功了。
评论0
暂时没有评论