You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL 8.4离线安装Docker与runc冲突问题及解决咨询

问题原因
  1. containerd.io与系统runc的冲突本质:Docker官方的containerd.io包内置了独立的runc二进制文件,而RHEL 8.4默认通过container-tools模块安装了系统版runc。这两个runc属于不同软件生态的实现,yum会判定为文件冲突,因此提示要替换系统版runc。
  2. Buildah依赖报错的真相:Buildah虽然标注依赖runc >=1.0.0-26,但这个依赖是针对RHEL官方模块发布的runc包的,并非所有满足版本号的runc都被认可。当yum尝试替换为Docker提供的runc时,Buildah的依赖检查会因为包的提供者、归属模块不同,判定为依赖不满足,即使版本号达标。
离线安装Docker的解决方法

根据是否需要保留Buildah,分两种方案:

方案一:保留Buildah,绕过冲突安装Docker

这种方法会让系统同时保留官方runc和Docker的containerd.io,通过调整安装参数避免替换系统runc:

  • 先单独安装containerd.io,加上--setopt=obsoletes=0参数禁用包替换逻辑:
    yum localinstall --setopt=obsoletes=0 containerd.io-1.6.9-3.1.el8.x86_64.rpm
    
  • 再安装剩余的Docker RPM包(docker-ce、docker-ce-cli等):
    yum localinstall docker-ce-*.rpm docker-ce-cli-*.rpm docker-ce-rootless-extras-*.rpm
    
  • 安装完成后,修改Docker配置文件/etc/docker/daemon.json,指定Docker使用自身的runc:
    {
      "runtimes": {
        "runc": {
          "path": "/usr/bin/runc"
        }
      }
    }
    
  • 重启Docker服务:
    systemctl daemon-reload
    systemctl restart docker
    

方案二:卸载Buildah,正常安装Docker

如果不需要Buildah,可以直接卸载相关组件后安装Docker:

  • 卸载Buildah及关联的container-tools模块组件:
    yum remove buildah runc
    
  • 直接使用yum localinstall安装所有下载的Docker RPM包:
    yum localinstall *.rpm
    
  • 启动并启用Docker服务:
    systemctl start docker
    systemctl enable docker
    
验证安装

安装完成后,执行以下命令确认Docker正常运行:

docker --version
docker run hello-world

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:22:17