服务器上拉取公共镜像卡在 waiting 阶段,最后报连接超时。日志里能对上时间点,这种反而好排。

默认镜像仓库在境外,网络受限导致层下载失败。这一点先确认清楚,后面就不用反复试。

# /etc/docker/daemon.json
{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}
systemctl daemon-reload && systemctl restart docker
docker pull nginx:1.25

「Docker 拉取镜像超时」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

处理上按这个顺序:配置可用的镜像加速地址;重启服务生效;确认拉取来源与标签存在。

结果对不对很好判断,镜像能完整拉取,docker images 中能看到对应标签。

作者 9823189