华为云 ECS 上 docker pull 一直超时?配好 registry-mirrors 三步解决

举报
yd_282927746 发表于 2026/10/27 08:44:39 2026/10/27
【摘要】 国内访问 Docker Hub 经常超时,不是 Docker 装错了。本文给出 registry-mirrors 的完整配法、如何用 HTTP 状态码判断镜像源是否可用(401 也算活),以及从拉取到公网访问的完整验证链路和五个常见坑。

一、现象:docker pull 一直在超时

在华为云 KooLabs 云实验里做 Docker 练习,ECS 起来、yum install -y docker 也装好了,但一到拉镜像就卡住:

$ docker pull hello-world
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http:
 request canceled while waiting for connection (Client.Timeout exceeded)

不是 Docker 装错了,也不是网络不通——ping 网关能通,curl 华为云内网地址也正常。问题只出在访问 Docker Hub 这一条路上:国内网络直连 registry-1.docker.io 经常超时或被拒。

二、解决思路:给 Docker 配国内镜像加速

Docker 守护进程支持 registry-mirrors,配置后 docker pull 会优先从镜像站拉,只有缓存未命中才回源。改动只有一个文件:

# /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1panel.live",
    "https://dockerproxy.net"
  ]
}

改完重启:

systemctl restart docker
docker info | grep -A 3 "Registry Mirrors"

docker info 里能看到这三行就说明生效了。

三、怎么判断一个镜像源还活着

镜像源的生命周期很短,社区里流传的地址经常半年前就挂了。我的判断方法很简单——直接看 HTTP 状态码:

curl -sI -m 5 https://docker.m.daocloud.io/v2/ | head -1

三种结果的含义:

返回 含义
HTTP/1.1 200 OK 可用,正常回源
HTTP/1.1 401 Unauthorized 也算可用——说明服务在跑,只是 /v2/ 需要认证,Docker 自己会带 token
超时 / 502 / NXDOMAIN 不可用,换下一个

本次实验环境里实测:docker.m.daocloud.io 返回 401、docker.1panel.live 返回 200、dockerproxy.net 返回 200,三个都能用。看到 401 不要以为是坏的,这是最容易误判的一点。

四、完整验证链路

配好加速后,按顺序跑一遍,能一次确认"镜像拉取 → 容器运行 → 对外服务"三段都通:

docker pull hello-world
docker run --rm hello-world          # 打印 Hello from Docker! 即成功

docker pull nginx
docker run -d -p 80:80 --name web nginx

然后在服务器内部先验一次:

curl -I http://127.0.0.1
# HTTP/1.1 200 OK

再从本地机器验证公网访问:

curl -I http://<EIP>

如果本机 curl 通、公网 curl 超时,九成不是 Docker 的问题,而是安全组没放通 80 端口。去控制台的 VPC → 安全组 → 选关联实例的那条 → 入方向添加上 TCP:80、源地址 0.0.0.0/0,再试一次就通了。

五、几个容易踩的点

  1. daemon.json 里绝对不能写注释。JSON 不支持 //,写了 Docker 直接起不来,systemctl status docker 会显示 Failed to start Docker Application Container Engine,日志里是 invalid character '/'。
  2. 改完必须 systemctl restart docker,reload 不读这个文件。
  3. 镜像源是"加法"不是"替换":多个源会按顺序尝试,把最快/最稳的放第一位。
  4. 沙箱环境重启后配置会丢(云实验的资源是一次性的),但换到自己的 ECS 上这个文件会长期生效。
  5. 不是所有镜像都能加速:私有仓库、部分企业镜像需要单独的登录或代理,registry-mirrors 只对 Docker Hub 生效。

六、小结

国内环境里 Docker 相关问题的第一嫌疑人几乎总是镜像拉取,而 registry-mirrors 是最省事的解法:一个配置文件、一次重启、三条可用源,就能让 docker pull 从"永远超时"变成"几秒钟"。

顺带记一个排障顺序,能少走弯路:

docker pull 超时
  → curl -I <镜像源>/v2/ 看状态码(200/401 都算活)
  → 换源、重启 docker
  → 还是不行:看是不是安全组/代理/出网策略
  → 容器跑起来但外网访问不了:八成是安全组没放通端口

这条链路在云实验、自建虚拟机、公司内网服务器上都通用。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。