1、报错内容
 

[root@master1 ~]# docker search centos
Error response from daemon: Get "https://index.docker.io/v1/search?q=centos&n=25": dial tcp 209.95.56.60:443: i/o timeout

一、先确认基础网络连通性

首先排除服务器自身网络故障,执行以下命令验证:

  1. ping 官方仓库地址:检查是否能解析并连通仓库 IP

    bash

    ping index.docker.io  # 若提示"unknown host",则是DNS解析问题;若超时则是网络链路问题
    ping 69.63.181.12      # 直接ping报错中的IP,验证是否能通
    
  2. 测试 443 端口连通性:用 telnet 或 nc 确认端口是否开放(需先安装工具,如 yum install -y telnet nc

    bash

    telnet index.docker.io 443  # 正常会提示"Connected to index.docker.io"
    # 或用nc(更简洁)
    nc -zv index.docker.io 443  # 正常会显示"succeeded!"
    

二、常见问题及解决方案

根据上述测试结果,按以下场景针对性解决:

场景 1:DNS 解析失败(ping 提示 unknown host)

Docker 无法将 index.docker.io 解析为 IP,需配置可靠 DNS:

  1. 编辑 DNS 配置文件 /etc/resolv.conf

    bash

    vi /etc/resolv.conf
    
  2. 添加公共 DNS 服务器(二选一或都加):

    conf

    nameserver 8.8.8.8    # 谷歌DNS
    nameserver 114.114.114.114  # 国内114DNS
    
  3. 保存后重新测试 docker search centos,若仍不行,执行 systemctl restart network 重启网络。

如果重启后发现 还是没成功, resolv.conf 被覆盖

[root@master1 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.1.1
[root@master1 ~]# vim  /etc/resolv.conf 
[root@master1 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 114.114.114.114

解决办法:

先解决 resolv.conf 配置被覆盖的问题(确保 DNS 配置生效)

之前的 nmcli 配置可能未正确应用,重新执行以下步骤(替换 eth0 为你的实际连接名称,通过 nmcli connection show 确认):

bash

# 1. 查看当前网络连接名称(找到正在使用的连接,如 eth0、ens33 等)
nmcli connection show

# 2. 为该连接强制设置 DNS 并禁用自动 DNS(关键步骤)
nmcli connection modify eth0 ipv4.dns "8.8.8.8 114.114.114.114"  # 设置 DNS
nmcli connection modify eth0 ipv4.ignore-auto-dns yes             # 禁用 DHCP 自动推送的 DNS
nmcli connection modify eth0 ipv4.method auto                     # 保持 IP 自动获取(若你用静态 IP 则设为 manual)

# 3. 重新激活连接使配置生效
nmcli connection down eth0
nmcli connection up eth0

# 4. 验证 resolv.conf
cat /etc/resolv.conf

此时 resolv.conf 应显示你设置的 DNS(若仍未生效,可能是连接名称错误,务必核对步骤 1 的输出)。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐