安装docker的报错问题

先关闭安全机制
systemctl stop firewalld.service
setenforce 0

安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2 

设置阿里云镜像云

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

安装docker-ce

yum install -y docker-ce docker-ce-cli containerd.io

因为内核原因所以安装不成功

如果不是最小化安装环境下,只需要安装contain-SElinux包,就可以了

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 

 

<think>好的,用户之前按照我的指导升级Docker到20.10,但执行后版本还是显示19.03.13。现在需要分析问题所在。首先,用户执行了yum install安装指定版本的Docker,但系统提示已经安装,但版本没变。这可能意味着旧版本未被正确替换,或者存在多个仓库源冲突。 首先,检查用户的操作步骤是否正确。用户卸载了旧版本,添加了正确的仓库,并尝试安装20.10.22。但安装时系统提示已经安装,但docker --version还是旧版本。这可能是因为旧版本的docker-cedocker-ce-cli没有完全卸载,导致新版本未能正确安装。或者用户可能没有安装docker-ce-cli,因为Docker的客户端和服务端是分开的包,只安装docker-ce可能没有更新CLI工具,导致版本号未变。 另外,用户可能添加了多个仓库源,导致yum安装时选择了旧版本的包。需要检查仓库配置是否正确,是否只有新版的源。此外,可能旧版本的Docker来自其他仓库,如epel,需要禁用这些仓库,确保yum从正确源安装。 还要考虑是否有残留的旧版本文件未被删除,或者服务未正确重启。可能安装后未启动新版本的服务,或者旧版本的服务仍在运行。此外,检查是否安装了正确的containerd.io版本,因为依赖包版本不兼容也可能导致问题。 接下来,需要建议用户彻底卸载所有Docker组件,包括旧版本和相关的cli工具,然后再次尝试安装指定版本,并确保包含docker-ce-cli。同时,验证仓库配置,禁用其他可能提供旧版本Docker的仓库,确保安装的是正确源中的包。安装完成后,重启Docker服务并检查版本。如果问题依旧,可能需要手动删除残留文件或检查系统路径是否正确。</think>--- ### **问题诊断** 根据你的操作记录,虽然系统显示 `docker-ce-20.10.22` 已安装,但 `docker --version` 仍显示 `19.03.13`,这表明 **旧版本 Docker 未被完全卸载** 或 **存在多仓库版本冲突**。以下是详细解决方案: --- ### **原因分析** 1. **残留旧版本组件** - `yum remove` 可能未彻底删除旧版 Docker 的核心组件(如 `docker-ce-cli`)。 2. **仓库优先级问题** - 系统中可能存在其他仓库(如 `epel`)提供了旧版 Docker,导致安装时默认选择低版本。 3. **未安装 `docker-ce-cli`** - Docker 客户端 (`docker-ce-cli`) 和服务端 (`docker-ce`) 是独立安装的,若未更新 CLI 工具,版本号不会变化。 --- ### **完整解决方案** #### **步骤 1:彻底卸载所有 Docker 组件** ```bash # 强制删除所有 Docker 相关包(包括旧版残留) yum remove -y docker* containerd.io # 清理残留文件 rm -rf /var/lib/docker rm -rf /var/lib/containerd ``` --- #### **步骤 2:确认仓库配置** 确保已正确配置 **Docker 官方仓库**,并禁用其他可能冲突的仓库(如 `epel`): ```bash # 禁用 epel 仓库(如果存在) yum-config-manager --disable epel # 检查当前启用的仓库 yum repolist ``` --- #### **步骤 3:重新安装 Docker 20.10.22** 必须同时安装 `docker-ce` 和 `docker-ce-cli`: ```bash # 指定完整包名(包含 cli) yum install -y docker-ce-3:20.10.22-3.ule3 docker-ce-cli-3:20.10.22-3.ule3 containerd.io # 启动服务并检查版本 systemctl start docker docker --version ``` --- #### **步骤 4:验证关键文件路径** 如果版本仍不正确,检查 Docker 二进制文件的实际路径: ```bash # 查看 docker 命令来源 which docker # 预期输出: /usr/bin/docker # 检查文件版本 /usr/bin/docker --version ``` --- ### **常见问题排查** #### **场景 1:`docker --version` 仍显示旧版本** - **原因**:旧版本 CLI 工具未被覆盖。 - **解决**:手动删除旧版二进制文件: ```bash # 查找旧版本文件 find / -name "docker*" -exec ls -l {} \; # 强制删除旧版本(例如 /usr/local/bin/docker) rm -f /usr/local/bin/docker ``` --- #### **场景 2:安装时提示 `Nothing to do`** - **原因**:仓库中未找到指定版本或缓存未更新。 - **解决**:清理缓存并重新安装: ```bash yum clean all yum makecache yum install -y docker-ce-3:20.10.22-3.ule3 docker-ce-cli-3:20.10.22-3.ule3 ``` --- ### **操作验证** 执行完上述步骤后,预期输出如下: ```bash [root@hmn0001 ~]# docker --version Docker version 20.10.22, build 3a2c30b ``` --- ### **版本未更新的根本原因总结** | **问题** | **表现** | **解决方法** | |-------------------------|----------------------------------|----------------------------------| | 旧版 CLI 残留 | 客户端版本未更新 | 彻底卸载并删除残留文件 | | 多仓库版本冲突 | 安装时默认选择低版本 | 禁用冲突仓库(如 `epel`) | | 未安装 `docker-ce-cli` | 服务端更新但客户端未更新 | 显式安装 `docker-ce-cli` | --- ### **补充建议** 1. **检查依赖项兼容性**: 确保 `containerd.io` 版本与 Docker 20.10 兼容(要求 `containerd.io >= 1.4.3`)。 2. **日志分析**: 查看安装过程中的详细日志: ```bash journalctl -u yum.transaction ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值