镜像拉不下来,docker pull 一直超时。排查下来是域名解析被污染,不是 Docker 本身的问题。

怎么判断

先看解析结果:

nslookup registry-1.docker.io

正常应该解析到 Docker 的 CDN 地址。如果解析到一个完全不相干的网段,基本可以确认。

再看是不是网络层的问题:换一个镜像仓库地址测一下拉取,能成功就说明是源站不可达,而不是本机网络不通。

三种处理方式

  1. 改用国内镜像源:把镜像名加上镜像站前缀,最省事,缺点是镜像可能不全
  2. 给 Docker 配代理:Docker Desktop 要在设置里单独填代理,系统代理它不一定继承
  3. 改 DNS:把 Docker 使用的 DNS 换成公共 DNS,对已经被污染的域名不一定有效

提醒

改了 registry 镜像之后不要忘记 docker login 仍然走的是原地址,登录失败不代表拉取失败。