看到 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
🧪 验证测试
做完上述任一调整后,请务必先验证基础连接,再拉取镜像:
-
测试 HTTPS 连接(比 ping 更准确):
curl -v https://registry-1.docker.io/v2/- 如果返回
HTTP/2 200或401,说明网络完全通畅。 - 如果依然超时,说明是物理网络或代理问题。
- 如果返回
-
拉取小镜像测试:
docker pull hello-world- 如果
hello-world能拉下来,说明镜像加速器生效了。 - 如果依然失败,请尝试只保留
ustc(中科大)源,注释掉其他两个,因为中科大源通常对教育网和科研网优化最好。
- 如果
💡 总结
鉴于你已经配置了加速器且 ping 得通,90% 的概率是服务器本地的 firewalld 防火墙或云平台的"安全组"拦截了 443 端口。请优先检查并放行该端口。