群晖上Docker下载的几种方式

前言

去年大概也是这个时候,有不少人在问 docker 查询注册表失败的问题

文章传送门:开源URL短链接服务Shlink

这次似乎问题更严重一些,不仅仅是不能查询注册表,而是连 docker pull 都不行了

bash 复制代码
# 镜像拉取测试
docker pull alpine:3.18.2

返回的结果显示超时了

log 复制代码
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/ 下载,会多几个步骤

将需要下载的镜像名称输入到 ① 处,点 ② 的 获取命令

会得到 ③ 中的三条命令

bash 复制代码
# 从代理拉取镜像
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-mirror
docker 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 客户端逐条执行

bash 复制代码
# 从代理拉取镜像
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

bash 复制代码
# 从代理拉取镜像
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

相关推荐
IT成长日记2 小时前
【Docker基础】Docker数据持久化与卷(Volume)介绍
运维·docker·容器·数据持久化·volume·
热爱生活的猴子2 小时前
阿里云服务器正确配置 Docker 国内镜像的方法
服务器·阿里云·docker
FrankYoou6 小时前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
隆里卡那唔6 小时前
在dify中通过http请求neo4j时为什么需要将localhost变为host.docker.internal
http·docker·neo4j
疯子的模样6 小时前
Docker 安装 Neo4j 保姆级教程
docker·容器·neo4j
Lpy256910 小时前
Docker Desktop 安装到D盘(包括镜像下载等)+ 汉化
运维·docker·容器
hunjinYang10 小时前
Tomcat镜像实战:掌握Dockerfile的编写以及发布项目
docker·tomcat
好奇的菜鸟11 小时前
Docker 配置项详解与示例
运维·docker·容器
IT成长日记17 小时前
【Docker基础】Docker数据卷管理:docker volume inspect及其参数详解
运维·docker·容器·volume·inspect
ladymorgana17 小时前
【Docker】如何设置 `wiredTigerCacheSizeGB` 和 `resources.limits.memory`
运维·docker·容器