前言
去年大概也是这个时候,有不少人在问
docker
查询注册表失败的问题
文章传送门:开源URL短链接服务Shlink
这次似乎问题更严重一些,不仅仅是不能查询注册表,而是连
docker pull
都不行了
# 镜像拉取测试docker pull alpine:3.18.2
返回的结果显示超时了
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
解决方案
方法一:设置镜像站点
群晖
Docker
-->
注册表
-->
设置
亲测只有南大的有用,但能用多久老苏也不知道
- 注册表名称:随意,例如:
南京大学镜像站
- 注册表 URL:
https://docker.nju.edu.cn
点
确认
保存
方法二:通过代理站点下载
通过
docker
代理网站:https://dockerproxy.com/ 下载,会多几个步骤
将需要下载的镜像名称输入到 ① 处,点 ② 的
获取命令
会得到 ③ 中的三条命令
# 从代理拉取镜像docker pull dockerproxy.com/library/alpine:3.18.2
# 重命名镜像docker tag dockerproxy.com/library/alpine:3.18.2 alpine:3.18.2
# 删除代理镜像https://github.com/DaoCloud/public-image-mirrordocker rmi dockerproxy.com/library/alpine:3.18.2
然后将上面三条命令,通过
SSH
客户端连接到群晖后,逐条执行。不过现在大概率是👇这样的。可能是因为使用的人太多了?
方法三:和方法二类似,只是第三方服务不同
基于开源项目
CRProxy (Container Registry Proxy)
,
CRProxy
是一个通用的
Image
代理,需要在所有需要使用镜像的地方加上前缀
cr.zsm.io/
,使用说明参考官方文档:https://github.com/wzshiming/crproxy/blob/master/README_cn.md
考虑到所有都要加前缀太长了,所以采用了方式二的办法,先加前缀下载,然后再重命名的方法
还是以
alpine3.18.2
为例,在
SSH
客户端逐条执行
# 从代理拉取镜像docker pull cr.zsm.io/docker.io/library/alpine:3.18.2
# 重命名镜像(非必须)docker tag cr.zsm.io/docker.io/library/alpine:3.18.2 alpine:3.18.2
# 删除代理镜像(非必须)docker rmi cr.zsm.io/docker.io/library/alpine:3.18.2
再举个例子
wbsu2003/yesplaymusic
# 从代理拉取镜像docker pull cr.zsm.io/docker.io/wbsu2003/yesplaymusic:latest
# 重命名镜像(非必须)docker tag cr.zsm.io/docker.io/wbsu2003/yesplaymusic:latest wbsu2003/yesplaymusic:latest
# 删除代理镜像(非必须)docker rmi cr.zsm.io/docker.io/wbsu2003/yesplaymusic:latest
小结
这些方法可能都是暂时的,也许今天是
OK
的,可能明天又不灵了。
作为
折腾一族
,终极方法当然还是要把自己的网络搞的科学一点,这可以让我们专注于折腾本身,而不会受到其他杂事的干扰。
参考文档
wzshiming/crproxy: CRProxy (Container Registry Proxy)
地址:https://github.com/wzshiming/crproxy
版权归原作者 杨浦老苏 所有, 如有侵权,请联系我们删除。