在CentOS8下安装docker遇到的containerd.io >= 1.4.1解决方法

CentOS8装Docker
本文详细介绍在CentOS8上安装Docker的步骤,并解决安装过程中遇到的containerd.io版本不兼容的问题。通过手动安装特定版本的containerd.io,确保Docker安装顺利完成。

官方的CentOS 8 安装 docker 步骤:

# 1、yum 包更新到最新
yum update

# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2

# 3、 设置yum源
yum-config-manager --add-repo https://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo

# 4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce docker-ce-cli  containerd.io

# 5、 查看docker版本,验证是否验证成功
docker -v

但是在第4步的过程中安装出现如图错误:
在这里插入图片描述
这是由于CentOS8的yum默认安装了containerd.io的1.2.0-3版本,不支持新版docker我按照网上指定版本的方法:

[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
[root@localhost ~]# yum install docker-ce=[VERSION] docker-ce-cli=[VERSION] -y

但是还是报错,最后使用了:

yum install https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.4.3-3.1.el8.x86_64.rpm

强制安装高版本的containerd.io-1.4.3,再执行yum install -y docker-ce docker-ce-cli containerd.io便成功

当然也可以在https://download.docker.com/linux/中选择你需要系统版本

<think>好的,我现在需要解决用户提出的关于docker-ce和containerd.io依赖冲突的问题。用户使用的是el8操作系统,涉及到的软件包有docker-ce-3:26.1.3-1.el8.x86_64containerd.io-1.6.24-3.1.el8.x86_64和runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64。根据引用内容,用户遇到了依赖冲突,尤其是containerd.io与runc的冲突。 首先,我应该回顾用户提供的引用内容。引用[1]提到docker-ce-24.0.5需要containerd.io 1.6.4及以上版本,而引用[2]指出containerd.io-1.4.10与runc-1.0.2存在冲突。引用[3]显示旧版docker-ce需要containerd.io >=1.2.2-3,而引用[4]涉及更早的docker-ce版本。现在用户的问题是关于docker-ce-26.1.3,需要containerd.io >=1.6.24,但可能当前的runc版本不够新,导致冲突。 接下来,我需要分析依赖冲突的原因。通常,这种冲突是因为软件包之间的版本不兼容。例如,较新的containerd.io可能要求更高版本的runc,而系统中安装的runc版本过低。或者,软件仓库中的可用版本无法满足依赖关系。 可能的解决方案包括: 1. 更新runc到兼容的版本。如果containerd.io-1.6.24需要runc >=某个版本,而当前runc是1.0.2,可能需要找到并安装更新的runc包。 2. 检查是否有更新的docker-ce版本,或者是否有其他仓库提供兼容的containerd.io和runc组合。例如,启用正确的Docker仓库或EPEL仓库。 3. 手动安装所需版本的containerd.io和runc,绕过包管理器的依赖解决,但这种方法可能存在风险,需要谨慎操作。 另外,用户提到操作系统是el8,即RHEL 8或其衍生版本,如CentOS 8或AlmaLinux 8。需要确认这些系统的官方仓库或Docker官方仓库中是否有更新的软件包可用。 可能还需要处理软件源优先级的问题,确保从正确的仓库获取更新的containerd.io和runc。例如,Docker的官方仓库可能提供比默认系统仓库更新的版本。 如果系统仓库中的runc版本确实过旧,可能需要从其他来源安装,比如从容器技术的官方项目页面下载合适的runc二进制文件,或者使用第三方仓库。但需要注意兼容性和安全性问题。 总结步骤应该是: - 确认当前系统仓库中的runc和containerd.io的可用版本。 - 更新仓库信息,添加必要的官方仓库(如Docker仓库)。 - 尝试安装或更新containerd.io到满足docker-ce要求的版本,同时解决runc的依赖问题。 - 如果存在冲突,可能需要同时升级runc到兼容版本,或者降级docker-ce到与现有containerd.io和runc兼容的版本。 此外,用户可能需要移除旧版本的containerd.iodocker-ce,清理残留的依赖关系,再重新安装。使用yum或dnf的排除选项或者模块重置可能有助于解决冲突。 需要验证每一步骤的正确性,例如,检查是否存在containerd.io-1.6.24的el8兼容包,以及对应的runc版本是否可用。如果官方仓库没有,可能需要手动下载rpm包安装,或者使用其他方法。 最后,如果所有方法都无法解决,可能需要寻求替代方案,比如使用Podman或其他容器工具,或者等待软件仓库更新。</think>### 分步解决方案 1. **确认软件源配置** 添加Docker官方仓库以确保获取最新版本: ```bash sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo sudo dnf clean all && sudo dnf makecache ``` 2. **检查可用版本兼容性** 使用以下命令验证仓库中`containerd.io`和`runc`的版本是否符合要求: ```bash dnf list --showduplicates containerd.io dnf list --showduplicates runc ``` 若仓库中`runc`版本过低(如当前为1.0.2),需从第三方仓库(如EPEL)或手动安装新版本。 3. **强制升级`containerd.io`并解决冲突** 若`runc`冲突由版本过低导致,需手动安装新版本。例如从容器项目官网下载`runc`二进制文件: ```bash wget https://github.com/opencontainers/runc/releases/download/v1.1.12/runc.amd64 sudo install -m 755 runc.amd64 /usr/local/sbin/runc ``` 4. **安装指定版本`docker-ce`** 使用`dnf`的`--allowerasing`选项解决依赖冲突: ```bash sudo dnf install docker-ce-3:26.1.3-1.el8.x86_64 containerd.io-1.6.24 --allowerasing ``` 此命令会替换冲突的旧版`runc`或其他依赖包[^1][^2]。 5. **验证安装结果** ```bash systemctl start docker docker version | grep -E "Server:| containerd" ``` 若输出显示`containerd.io 1.6.24`且无报错,则安装成功。 --- ### 依赖关系图示 $$ \begin{aligned} \text{docker-ce-26.1.3} &\rightarrow \text{containerd.io} \geq 1.6.24 \quad (\text{必须满足}) \\ \text{containerd.io-1.6.24} &\rightarrow \text{runc} \geq 1.1.0 \quad (\text{与系统原runc-1.0.2冲突}) \end{aligned} $$ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值