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)
- Ubuntu/Debian 系列:
第二步:修正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




