Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os解决办法

centos7 docker 容器安装工具过程中报错如下信息
Could not retrieve mirrorlist
http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container
error was 14: curl#6 - “Could not resolve host: mirrorlist.centos.org;
Unknown error”

这个错误表明你的 CentOS 系统无法解析 mirrorlist.centos.org 的主机名,可能是由于 DNS 配置问题、网络连接问题或镜像源不可用导致的。以下是详细的排查和解决方法:


1. 检查网络连接

确保你的系统能够访问互联网。

测试网络连通性:
ping -c 4 baidu.com

如果无法 ping 通外部地址,可能是网络配置有问题。

测试 DNS 解析:
nslookup mirrorlist.centos.org

如果 DNS 解析失败,说明系统的 DNS 配置可能有问题。


2. 检查 DNS 配置

CentOS 使用 /etc/resolv.conf 文件来配置 DNS 服务器。

查看当前 DNS 配置:
cat /etc/resolv.conf

如果文件中没有有效的 DNS 服务器地址(如 8.8.8.88.8.4.4),可以手动添加。

修改 DNS 配置:

编辑 /etc/resolv.conf 文件:

sudo nano /etc/resolv.conf

添加以下内容:

nameserver 8.8.8.8
nameserver 8.8.4.4

保存并退出。

注意:在某些情况下,/etc/resolv.conf 可能会被 NetworkManager 或其他工具覆盖。为了避免被覆盖,可以编辑 /etc/sysconfig/network-scripts/ifcfg-<interface> 文件,添加以下内容:

DNS1=8.8.8.8
DNS2=8.8.4.4

然后重启网络服务:

sudo systemctl restart network

3. 检查镜像源配置

CentOS 的镜像源配置位于 /etc/yum.repos.d/ 目录下。

查看镜像源配置:
ls /etc/yum.repos.d/

常用文件包括 CentOS-Base.repoCentOS-Vault.repo

编辑镜像源文件:

打开 CentOS-Base.repo 文件:

sudo nano /etc/yum.repos.d/CentOS-Base.repo

将所有 mirrorlist 行注释掉,并取消注释或添加 baseurl 行。例如:

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/7/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

保存并退出。


4. 清理 Yum 缓存

修改配置后,清理 Yum 缓存并重新生成索引。

清理缓存:
sudo yum clean all
生成新缓存:
sudo yum makecache

5. 使用国内镜像源(可选)

如果你在中国大陆,直接访问国外的 CentOS 镜像可能会很慢甚至失败。可以使用国内的镜像源(如阿里云、腾讯云等)。

替换为阿里云镜像源:

编辑 /etc/yum.repos.d/CentOS-Base.repo 文件,将所有 baseurl 替换为阿里云的镜像地址。例如:

[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

保存并退出后,再次运行:

sudo yum clean all
sudo yum makecache

6. 检查容器环境(如果适用)

如果你在容器环境中运行 CentOS(如 Docker 容器),默认情况下容器可能没有完整的网络配置。

解决方法:
  1. 确保宿主机的网络正常。
  2. 在启动容器时,添加 --network host 参数以共享宿主机的网络:
    docker run --network host centos:7
    

7. 总结

通过以下步骤解决问题:

  1. 检查网络连接:确保系统能够访问互联网。
  2. 检查 DNS 配置:确保 /etc/resolv.conf 中有有效的 DNS 服务器地址。
  3. 修改镜像源配置:将 mirrorlist 替换为 baseurl,或者使用国内镜像源。
  4. 清理 Yum 缓存:运行 yum clean allyum makecache
  5. 检查容器环境:如果是容器环境,确保网络配置正确。

完成上述操作后,重新尝试运行 yum 命令,应该可以正常工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Brilliant Nemo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值