【Docker】AlmaLinux 8.10 系统下 Docker-ce 与 Podman 冲突的解决与安装实践

张开发
2026/6/5 9:02:42 15 分钟阅读
【Docker】AlmaLinux 8.10 系统下 Docker-ce 与 Podman 冲突的解决与安装实践
1. AlmaLinux与Docker-ce的兼容性背景最近在AlmaLinux 8.10上安装Docker-ce时遇到了一个典型问题系统预装的Podman组件与Docker-ce产生了严重冲突。这让我想起去年在CentOS 8上遇到的类似情况当时也是被依赖关系搞得焦头烂额。AlmaLinux作为CentOS的替代品确实继承了RHEL的优秀基因但同时也继承了一些让人头疼的包管理问题。AlmaLinux 8.10默认安装了Podman 4.9.4版本这个容器工具本身很不错但当我们想安装Docker-ce时就会遇到麻烦。具体表现为yum会报出一大堆依赖冲突主要是containerd.io和runc这两个关键组件与系统现有包不兼容。我实测发现直接运行yum install docker-ce会提示需要移除Podman及其相关组件但系统又不允许这样做陷入了死循环。2. 深入分析冲突根源2.1 依赖冲突的具体表现当我尝试安装Docker-ce时yum抛出的错误信息简直像天书一样。经过仔细分析发现问题主要集中在以下几个方面runc版本冲突Podman要求runc版本1.0.0-57而Docker自带的containerd.io会替换系统原有的runc包替代关系containerd.io声明要替代(obsolete)系统原有的runc包依赖链断裂buildah、podman等组件都依赖特定版本的runc错误 问题1: 安装的软件包的问题 podman-4:4.9.4-1.module_el8.10.0384587b84552.x86_64 - package podman-4:4.9.4-1.module_el8.10.0384587b84552.x86_64 from System requires runc 1.0.0-57 - package containerd.io-1.6.32-3.1.el8.x86_64 from commandline conflicts with runc provided by runc-1:1.1.12-1.module_el8.10.0384587b84552.x86_64 from System2.2 系统原有容器生态AlmaLinux 8.10默认的容器工具链包括Podman 4.9.4Buildah 1.33.7runc 1.1.12containers-common 1-81这套工具链是紧密集成的任何一环被替换都会导致连锁反应。Docker-ce想要用自己的containerd.io替换系统runc自然会引发冲突。3. 解决方案与实操步骤3.1 关键参数解析经过多次尝试我发现yum有两个救命参数--allowerasing允许移除冲突的包--nobest不强制使用最佳候选包这两个参数组合使用可以强制yum解决依赖冲突。原理是--allowerasing允许移除Podman及其依赖--nobest允许使用非最优的包版本组合3.2 完整安装流程第一步下载Docker-ce及其相关组件建议从Docker官方仓库下载最新稳定版wget https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.6.32-3.1.el8.x86_64.rpm wget https://download.docker.com/linux/centos/8/x86_64/stable/Packages/docker-ce-26.1.3-1.el8.x86_64.rpm wget https://download.docker.com/linux/centos/8/x86_64/stable/Packages/docker-ce-cli-26.1.3-1.el8.x86_64.rpm第二步使用特殊参数安装yum install -y ./*.rpm --allowerasing --nobest这个命令会移除冲突的Podman组件安装Docker及其依赖自动处理libcgroup等必要依赖第三步验证安装结果systemctl start docker docker version4. 安装后的系统变化安装完成后系统会发生以下变化移除的包podmanbuildahcockpit-podmancontainers-commonpodman-catatonit新增的包docker-cedocker-ce-clicontainerd.iodocker-buildx-plugindocker-compose-plugin服务变化新增docker.socket和docker.servicecontainerd服务被启用5. 常见问题与解决方案5.1 网络配置问题安装后如果遇到网络问题可以检查firewall-cmd --permanent --zonetrusted --add-interfacedocker0 firewall-cmd --reload5.2 存储驱动选择AlmaLinux 8.10默认使用overlay2存储驱动可以通过以下命令验证docker info | grep Storage Driver如果显示Storage Driver: overlay2则表示配置正确。5.3 用户权限问题要让普通用户使用docker需要将其加入docker用户组usermod -aG docker your_username然后需要重新登录使更改生效。6. 性能优化建议在AlmaLinux上运行Docker我推荐以下优化措施调整cgroup驱动 编辑/etc/docker/daemon.json{ exec-opts: [native.cgroupdriversystemd] }日志轮转配置 防止日志文件过大mkdir -p /etc/docker echo { log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } /etc/docker/daemon.json内核参数调整echo vm.max_map_count262144 /etc/sysctl.conf sysctl -p7. 生产环境注意事项在企业环境中使用需要注意备份策略定期备份/var/lib/docker目录监控方案配置Prometheus监控Docker指标安全加固启用用户命名空间限制容器权限定期更新Docker版本我曾在一次生产环境迁移中因为没处理好这些依赖关系导致服务中断了2小时。从那以后我都会先在测试环境验证这类操作。8. 替代方案探讨如果不想移除Podman也可以考虑使用Podman完全替代Docker Podman现在基本兼容Docker命令行且不需要守护进程容器运行时选择yum install cri-o双容器方案 在虚拟机或单独环境中运行Docker不过根据我的经验在需要完整Docker生态的场景下还是直接安装Docker-ce最方便。虽然会替换掉Podman但换来的是更丰富的功能和更广泛的社区支持。

更多文章