You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Docker安装后运行hello-world容器报错:runtime "io.containerd.runc.v2"二进制文件缺失问题求助

解决Docker运行hello-world时出现的io.containerd.runc.v2缺失错误

这个错误我在日常运维中碰到过好几次,本质是Docker依赖的containerd组件找不到runc运行时的二进制文件,下面是几个经过验证的解决步骤,你可以一步步试:

  • 第一步:检查并安装runc
    先确认系统里有没有装runc,执行命令:

    which runc
    

    如果没有任何输出,说明runc没安装,根据你的系统包管理器来安装:

    • Ubuntu/Debian 系列:sudo apt update && sudo apt install runc
    • CentOS/RHEL 系列:sudo dnf install runc(旧版本可以用yum
  • 第二步:修正containerd的配置路径
    有时候containerd的配置文件里runc的路径写错了,编辑/etc/containerd/config.toml文件:

    sudo nano /etc/containerd/config.toml
    

    找到[runtime.runc]区块,确保binary_path指向正确的runc路径(通常是/usr/sbin/runc),比如:

    [runtime.runc]
      binary_path = "/usr/sbin/runc"
    

    保存后重启containerd服务:

    sudo systemctl restart containerd
    
  • 第三步:修复Docker与containerd的版本兼容性
    如果上面两步都没用,大概率是Docker和containerd版本不匹配。建议卸载现有Docker组件后,重新安装官方稳定版:
    先卸载旧版本:

    sudo apt remove docker docker-engine docker.io containerd runc # Ubuntu/Debian
    # 或者 CentOS/RHEL:sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine containerd runc
    

    然后按照Docker官方的标准步骤重新安装(优先用官方源,避免第三方包带来的版本冲突)。

  • 第四步:检查runc文件权限
    少数情况是runc的文件权限不对,导致containerd无法读取:

    ls -l /usr/sbin/runc
    

    正常权限应该是-rwxr-xr-x,所有者是root:root,如果不对,执行:

    sudo chmod 755 /usr/sbin/runc
    sudo chown root:root /usr/sbin/runc
    

如果以上步骤都试过还是不行,可以尝试重置containerd的默认配置,然后重启服务再测试:

sudo containerd config default > /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl restart docker

内容的提问来源于stack exchange,提问作者Rea Haas

火山引擎 最新活动