1. 错误提示
在拉取镜像时,偶尔会碰到如下错误:
|
|
2. 主要解决办法
2.1 修改 DNS 地址
如果是 CentOS ,直接修改 /etc/resolv.conf
文件,新增一行 nameserver 8.8.8.8
即可。
如果是 Ubuntu ,需要修改 /etc/systemd/resolved.conf
,添加如下内容:
[Resolve]
DNS=8.8.8.8
接着执行命令 systemctl restart systemd-resolved
重启服务即可。
2.2 本地与服务器时间偏差过大
执行如下命令,进行时间同步:
|
|
2.3 配置镜像加速
配置镜像加速之后,如果待拉取的镜像已经存在于 mirror ,则直接从 mirror 拉取镜像层数据。
|
|
3. 可能的原因
3.1 Cloudflare 的 IP 被禁
Dockerhub 借助 Cloudflare 的网络进行镜像的分发。在国内环境下,Cloudflare IP 的可用性得不到保障,部分 IP 被禁。
通过修改 nameserver 改变了 production.cloudflare.docker.com 指向的服务 IP 地址,切换到其他 IP 上尝试。而进行时间同步,应对的是证书无效问题,这里可能并没有效果,而只是拖延了时间,以便 DNS 指向发生变化。配置镜像加速之后,拉取镜像的 IP 会发生变化,也有可能解决问题。
3.2 Dockerhub 提升营收的策略
由于 Dockerhub 大部分都是免费的用户,难以承担巨额的带宽和存储费用,因此免费用户在可用性受损。