拉取Docker镜像时提示找不到AddResource方法的问题求助
解决Docker拉取镜像时的
AddResource方法未实现错误 我之前也碰到过一模一样的问题,这个报错的根源很明确:你的containerd版本太低了。Docker 20.10.x系列依赖的containerd需要支持AddResource这个lease相关的方法,但你当前用的containerd v1.2.4是比较旧的版本,根本没实现这个接口,所以不管拉什么镜像都会失败。
下面是亲测有效的修复步骤:
第一步:先备份配置(稳妥起见)
先把现有的containerd配置文件备份一份,万一操作出问题还能恢复:
sudo cp /etc/containerd/config.toml /etc/containerd/config.toml.bak
第二步:升级containerd到兼容版本
Docker 20.10.x至少需要containerd 1.4.x以上的版本,这里给你两种升级方式:
方式一:通过Docker官方源一键升级(推荐)
如果你是用Docker官方源装的Docker,直接重新安装Docker Engine就行,它会自动把配套的containerd升级到兼容版本:
# 先停掉Docker和containerd服务 sudo systemctl stop docker sudo systemctl stop containerd # 重新安装同系列的最新稳定版(以Ubuntu为例,其他系统换对应的包管理命令) sudo apt-get update sudo apt-get install docker-ce=5:20.10.24~3-0~ubuntu-$(lsb_release -cs) docker-ce-cli=5:20.10.24~3-0~ubuntu-$(lsb_release -cs) containerd.io
要是你用的是CentOS/RHEL,把apt-get换成yum或者dnf就行,包名一致。
方式二:手动单独升级containerd
如果不想动Docker本身,也可以单独升级containerd:
- 前往containerd官方发布渠道,下载与Docker 20.10.x兼容的1.4.x系列稳定版(比如v1.4.13)的Linux amd64二进制压缩包。
- 将下载的压缩包解压到系统目录:
sudo tar Cxzvf /usr/local containerd-<你的版本号>-linux-amd64.tar.gz
- 同步下载对应版本的runc二进制文件(确保和containerd版本匹配),将其安装到系统路径:
sudo install -m 755 runc.amd64 /usr/local/sbin/runc
- 重启服务使升级生效:
sudo systemctl restart containerd sudo systemctl restart docker
第三步:验证修复效果
拉个轻量的测试镜像试试,比如alpine:
docker pull alpine:latest
再检查下containerd版本,确认已经升级成功:
containerd --version
万一还是不行?试试重置containerd状态
如果升级后还是报错,可以试试重置containerd的本地状态(注意:这个操作会清除已拉取的镜像和本地容器状态,谨慎执行):
sudo systemctl stop containerd sudo rm -rf /var/lib/containerd sudo systemctl start containerd
内容的提问来源于stack exchange,提问作者lrouter
相关产品推荐
相关产品推荐

