You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CentOS7下Docker运行hello-world容器遇OCI runtime错误求助

解决CentOS 7上Docker运行hello-world时的OCI Runtime错误

嘿,我看你在CentOS 7上用yum装完Docker 17.12.0-ce后,跑hello-world容器时碰到了OCI runtime的报错,从你提供的日志和系统信息来看,核心问题是runc工具版本缺失/不匹配,还有几个次要的配置警告也得处理下,我给你整理了一步步的解决方法:

第一步:修复runc版本问题

从你的docker info里能看到runc version: N/A,这可是Docker启动容器的核心依赖工具,版本不对直接导致容器启动失败:

  1. 先停掉Docker服务:
    sudo systemctl stop docker
    
  2. 卸载可能损坏的runc包:
    sudo yum remove -y runc
    
  3. 要么安装匹配的runc版本,要么直接重新安装Docker确保依赖完整:
    • 安装指定runc版本:
      sudo yum install -y runc-1.0.0-rc5.el7.x86_64
      
    • 或者重新安装Docker(更稳妥,能自动拉取正确的依赖):
      sudo yum reinstall -y docker-ce-17.12.0.ce-1.el7.centos
      

第二步:处理DeviceMapper的Loopback警告(可选但推荐)

你的Docker现在用的是loopback设备做存储,官方明确说生产环境别这么用,测试环境倒无所谓,但如果想彻底解决这个警告:

  1. 先准备一个LVM逻辑卷作为thin pool(替换/dev/sdX为你的空闲磁盘):
    sudo pvcreate /dev/sdX
    sudo vgcreate docker_vg /dev/sdX
    sudo lvcreate --wipesignatures y -n thinpool docker_vg -l 95%VG
    sudo lvcreate --wipesignatures y -n thinpoolmeta docker_vg -l 1%VG
    sudo lvconvert -y --zero n -c 512K --thinpool docker_vg/thinpool --poolmetadata docker_vg/thinpoolmeta
    
  2. 创建Docker配置文件/etc/docker/daemon.json,指定用这个thin pool:
    {
      "storage-driver": "devicemapper",
      "storage-opts": [
        "dm.thinpooldev=/dev/mapper/docker_vg-thinpool",
        "dm.use_deferred_deletion=true",
        "dm.use_deferred_removal=true"
      ]
    }
    
  3. 重启Docker让配置生效:
    sudo systemctl daemon-reload
    sudo systemctl start docker
    

第三步:启用bridge-nf-call-iptables(解决网络警告)

这个设置能让Docker的桥接网络正常处理iptables规则,避免后续网络问题:

  1. 临时启用(重启后失效):
    sudo sysctl net.bridge.bridge-nf-call-iptables=1
    sudo sysctl net.bridge.bridge-nf-call-ip6tables=1
    
  2. 永久启用,创建/etc/sysctl.d/docker.conf文件:
    net.bridge.bridge-nf-call-iptables=1
    net.bridge.bridge-nf-call-ip6tables=1
    
    然后执行命令让配置立即生效:
    sudo sysctl -p /etc/sysctl.d/docker.conf
    

验证修复

做完上面的步骤后,再跑一次hello-world试试:

sudo docker run hello-world

要是能看到熟悉的“Hello from Docker!”输出,说明问题就解决啦!


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

火山引擎 最新活动