Docker 构建时网络超时拉不到镜像?一些排查和配置记录

最近在服务器上 docker build 的时候一直报 failed to fetch anonymous token,偶尔直接 network timeout,镜像死活拉不下来。查了一圈,记录一下排查过程和最终的配置,以后自己也能翻。

问题出在从 Docker Hub 拉镜像这一步,要么 DNS 解析不到 registry-1.docker.io,要么网络压根不通。先做几个基础检查。

复制代码
ping 8.8.8.8
ping google.com
nslookup registry-1.docker.io

ping 8.8.8.8 如果都不通,那先看看虚拟机的网络模式,NAT 模式下宿主机必须能正常上网,桥接的话检查 IP 配置。一般云服务器不太会有这个问题,本地虚拟机踩坑的多。

DNS 解析失败就更常见了。很多人直接去改 /etc/resolv.conf 加 nameserver 8.8.8.8,但是这个文件重启就会被覆盖,临时用可以,长期还得配到 Docker 的 daemon.json 里。在 /etc/docker/daemon.json 加上 dns 字段:

复制代码
{
  "dns": ["8.8.8.8", "114.114.114.114"]
}

然后重启 docker:sudo systemctl restart docker。这样容器内的 DNS 也会用这个。

网络能通但拉镜像还是慢或者 403,那大概率是没配镜像加速。国内访问 Docker Hub 很不稳定,需要在 daemon.json 里设置 registry-mirrors。我用的 daocloud 和网易的源,任选一个或都加上:

复制代码
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com"
  ]
}

如果之前已经有 dns 配置,就合并到一起。配完重启 docker,用 docker info | grep Mirrors 看下有没有生效。

有些环境需要走代理,比如公司内网。那就给 Docker 服务配代理,创建 /etc/systemd/system/docker.service.d/http-proxy.conf:

复制代码
[Service]
Environment="HTTP_PROXY=http://<代理IP>:<端口>"
Environment="HTTPS_PROXY=http://<代理IP>:<端口>"

替换成自己的代理地址,然后 sudo systemctl daemon-reload && sudo systemctl restart docker

防火墙也可能拦了。本机用 ufw 或 firewalld 的可以直接关掉测试:

复制代码
sudo ufw disable          # Ubuntu
sudo systemctl stop firewalld  # CentOS

如果是云服务器,别忘了安全组出方向要放行 443 端口,目标 0.0.0.0/0,不然访问 registry-1.docker.io 会被拦截。

来此加密实现了一套完整的证书生命周期管理方案:从申请、验证、签发、部署,到到期提醒、自动续期,全流程自动化。你只需关注业务本身,证书管理交给来此加密,彻底消除运维盲点。

一套组合拳下来,我一般会这样一口气配好 DNS 和镜像加速:

复制代码
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
sudo tee /etc/docker/daemon.json <<EOF
{
  "dns": ["8.8.8.8"],
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}
EOF
sudo systemctl restart docker

然后 docker pull nginx 测试一下,能拉下来基本就没问题了,再重新 build 你的镜像。

最后整理几个常见现象的对应关系,排查时心里有数:

报域名解析失败 → 去检查 /etc/resolv.conf 或 Docker 的 dns 配置。

连接超时 → 可能是网络不通或防火墙,先 ping 再查安全组。

返回 403 Forbidden → 八成没配镜像加速,加上 registry-mirrors。

代理认证失败 → 看看 http-proxy.conf 里的地址和端口对不对。

这些步骤基本能解决大多数构建时拉镜像的网络问题。如果还不行,可能得考虑用离线镜像或者搭个本地 registry,那就是另外的事了。

相关推荐
蜀道山老天师1 天前
K8s 数据存储全解析:从 EmptyDir 到 PV/PVC
云原生·容器·kubernetes
创世宇图1 天前
【Python工程化实战】Kubernetes 中 Python 应用的优雅启停与健康检查:零停机滚动更新实战
python·云原生·kubernetes·优雅停机
江畔柳前堤1 天前
第16章:docker企业级实战综合项目
运维·git·安全·docker·容器·eureka
江畔柳前堤1 天前
第15章:docker故障排查与面试题
大数据·运维·git·elasticsearch·docker·容器·eureka
江畔柳前堤1 天前
第17章:Docker 大厂面试题精选(腾讯/阿里/字节/美团)
运维·网络·spring cloud·docker·容器·eureka
江畔柳前堤1 天前
第14章:Docker 与 CI/CD
运维·ci/cd·docker·容器·eureka·github
阿里云云原生3 天前
研发视角的新突破:当 AI Coding 工具集成全域运维诊断,排查线上故障只需 3 分钟
云原生
小猿姐4 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
阿里云云原生4 天前
AgentTeams 和 Claude Tag 都进入群聊模式,是新范式还是新叙事?
云原生·agent
阿里云云原生5 天前
Higress v2.2.3 发布:正式入驻 CNCF Sandbox,AI Gateway 与 Ingress 迁移能力双向加固
云原生