docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker换源不生效的原因

docker换源不生效的原因以及解决方案

作者:一颗小小的石头.

文章讲述了如何更换Docker源以提高镜像拉取速度,但由于一些历史原因,官方和一些自建加速源可能无法完全满足需求,作者通过监控Docker服务状态并找到一个可靠的国内加速源链接,最终解决了Docker源不生效的问题

docker换源不生效

标题背景

网上一大堆教程告诉你如何换源,怎么执行命令,但发现换源之后,docker pull 仍然拉不下来。

云里雾里不知道什么原因?

历史操作

  1. 以阿里云镜像加速为例,它提供了个人维度的加速链接,在这里可以看到 容器镜像服务
  2. 按照上面的操作方式,vim /etc/docker/daemon.json 将个人加速链接配置进去,重启服务
  3. 发现 docker pull golang:1.22-alpine 依然报错,说明没有走到加速镜像
Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  1. 怀疑缓存导致,清理缓存 docker system prune -a
  2. 依然无效后,陷入死锁,在尝试更换了几个源之后没有明显解决。

原因

因为一些历史原因,从24年6月,docker 官方收紧了cn地区的镜像服务,同时,一些自建的镜像加速公有云也并没有完全收录所有镜像开放使用,以上面的阿里云链接为例

它引导用户使用制品中心中的镜像,但那里的镜像种类和版本,与docker官方的几乎不相同,

例如想要获取 golang 镜像,官方的是类似 golang:1.22-alpine ,但制品中心最新的是:

FROM anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/golang:1.19.4-8.6 

看到落后了好几个版本。但这个确实能很快速的拉取下来。

最终方案

由上可知,根本原因还是源本身的问题,还是需要找到可靠稳定的国内加速源链接,这里找到一个docker服务状态监控网站,找到镜像加速一栏,将其加入到/etc/docker/daemon.json后,重新尝试发现拉取镜像加速的概率大了很多

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文