验证docker镜像源是否生效需三步:一查配置是否加载(docker info | grep -a 1 "registry mirrors");二看拉取日志url是否为镜像源地址;三测耗时,加速后应为几秒至30秒内。

验证 Docker 镜像源配置是否真正生效,关键不是只看“配置写进去了”,而是确认拉取行为确实走的是国内镜像源、且速度和日志有明确体现。下面分三步讲清楚怎么查、怎么看、怎么判。
查看当前配置是否加载成功
运行命令:
docker info | grep -A 1 "Registry Mirrors"
如果输出中显示类似:
Registry Mirrors:
https://hub-mirror.c.163.com
https://mirror.ccs.tencentyun.com
说明 daemon.json 已被正确读取,配置已加载。但注意:这仅表示“配置存在”,不等于“正在使用”。
观察实际拉取过程的网络来源
执行一次真实拉取(建议用小镜像,如 nginx:alpine):
docker pull nginx:alpine
留意终端输出中的 URL 地址片段——Docker 会在日志里打印实际请求的 registry 地址。例如:
- 若看到 https://hub-mirror.c.163.com/v2/... 或 https://xxx.mirror.aliyuncs.com/v2/...,说明走的是你配的加速源;
- 若看到 https://registry-1.docker.io/v2/...,哪怕配置写了,也说明没生效或被忽略(常见于 JSON 格式错误、daemon 未重启、或镜像名带完整 registry 前缀如 docker.io/nginx)。
对比耗时与连接表现
用 time 命令测速,更直观:
time docker pull nginx:alpine
首次拉取后,再执行一次(确保本地无缓存干扰):
- 未加速典型耗时:1–5 分钟(尤其在高峰时段);
- 加速后正常耗时:几秒到 30 秒内(视镜像大小和网络状况);
- 如果仍卡在 “Waiting” 或报错 context deadline exceeded,大概率还在尝试访问 registry-1.docker.io,说明加速未起作用。
额外排查点(常被忽略)
以下情况会导致“配置写了却无效”:
- daemon.json 中 JSON 格式错误(比如末尾多逗号、引号不匹配),Docker 启动时会静默忽略整个文件;
- 修改后只执行了 systemctl restart docker,但没做 systemctl daemon-reload(部分系统必须);
- 拉取时用了完整路径如 docker pull docker.io/library/nginx:latest,Docker 会绕过 mirror 直连官方源;
- 公司网络策略屏蔽了镜像源域名(如拦截了 ustc.edu.cn 或 aliyuncs.com),需联系 IT 检查白名单。











