看到 docker info 的输出,情况非常理想!你的 Docker 已经成功配置了三个国内镜像加速器,并且网络层面的测试(ping)也显示基础连接正常。

现在出现的 WARNING 属于系统内核参数优化范畴,不影响你当前拉取镜像

针对你遇到的 Client.Timeout exceeded 问题,我判断是防火墙拦截了 HTTPS 流量,或者是DNS 缓存导致的。请按以下顺序排查:

🔍 核心排查:防火墙与安全组

这是最可能的原因。虽然你能 ping 通(ICMP协议),但 Docker 拉取镜像使用的是 TCP 443 端口 (HTTPS)。请执行以下检查:

检查系统防火墙 (firewalld/iptables)

执行以下命令查看防火墙状态:

sudo systemctl status firewalld
# 或者如果是 iptables
sudo iptables -L -n
  • 解决方法:如果防火墙开启且规则复杂,建议临时关闭防火墙进行测试:
    sudo systemctl stop firewalld
    
    然后再执行 docker pull hello-world。如果成功,说明是防火墙规则拦截了 443 端口。
检查云服务器安全组

登录阿里云/腾讯云控制台,检查该服务器的“安全组”规则。

  • 入方向:必须放行 443 端口(HTTPS)。
  • 出方向:通常默认允许所有,但如果自定义过,需确保允许访问外部 0.0.0.0/0 的 443 端口。

🛠️ 临时解决方案:修改 DNS

有时候 Linux 的 DNS 解析会出现缓存或配置问题,导致 HTTPS 握手超时。

请修改 Docker 的 DNS 配置,强制使用 Google 的公共 DNS:

# 编辑 daemon.json
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "dns": ["8.8.8.8", "8.8.4.4"]
}
EOF

# 重启 Docker
sudo systemctl restart docker

🧪 验证测试

做完上述任一调整后,请务必先验证基础连接,再拉取镜像:

  1. 测试 HTTPS 连接(比 ping 更准确):

    curl -v https://registry-1.docker.io/v2/
    
    • 如果返回 HTTP/2 200401,说明网络完全通畅。
    • 如果依然超时,说明是物理网络或代理问题。
  2. 拉取小镜像测试

    docker pull hello-world
    
    • 如果 hello-world 能拉下来,说明镜像加速器生效了
    • 如果依然失败,请尝试只保留 ustc(中科大)源,注释掉其他两个,因为中科大源通常对教育网和科研网优化最好。

💡 总结

鉴于你已经配置了加速器且 ping 得通,90% 的概率是服务器本地的 firewalld 防火墙或云平台的“安全组”拦截了 443 端口。请优先检查并放行该端口。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐