自建简易 docker 镜像源

2024-06-11 17:51:40 +08:00
 mosby

很早之前为了省流量缓存镜像折腾的,看到最近突然有人 star 了,分享一下,帮助有需要的人

实现方式是客户端将 gcr.io k8s.gcr.io quay.io docker.io registry-1.docker.io nvcr.io 这些域名解析到自己的机器,利用 nginx 根据域名分流到不同的 docker registry,利用 docker registry 的 pull through cache 功能缓存&加速镜像下载。

如果部署在外网 vps 的话可以直接用,如果部署在内网还需要指定一个代理,具体步骤可以看仓库 README

https://github.com/brighill/registry-mirror

4142 次点击
所在节点    Linux
7 条回复
anubu
2024-06-11 18:13:28 +08:00
非常感谢分享,给 OP 点赞。
之前折腾了一个一样的实现,客户端侧老老实实配置 mirror ,发现 docker 只能 mirror dockerhub ,其它仓库直接忽略。被迫切换到 containerd 用它的 hosts.toml 。看到 OP 客户端侧劫持 DNS 解析加 insecure ,豁然开朗。
E1n
2024-06-11 22:42:17 +08:00
'''
Error response from daemon: error parsing HTTP 403 response body: invalid character '<' looking for beginning of value: "<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body>\r\n<center><h1>403 Forbidden</h1></center>\r\n<hr><center>nginx/1.20.1</center>\r\n</body>\r\n</html>\r\n"
''' 请问只能默认 80 端口,不能修改端口吗
ebi5oowiiy1llo
2024-06-12 00:50:03 +08:00
原来作者也在这里呀,除了解析劫持还有共享存储也很妙,不过我设备多没弄劫持,直接泛域名解析正经用了,还加了个 ui 方便删镜像
raysonlu
2024-06-12 09:37:35 +08:00
为何不用 nexus?
mosby
2024-06-12 09:38:29 +08:00
@E1n 只能用 80 或者 443 ,其他端口的话镜像 tag 就不一样了,要改到 443 端口的话,理论上自签名一个泛域名证书,nginx.conf 里加上 ssl 配置,客户端信任 ca 证书应该就行了
dream10201
2024-06-12 17:39:46 +08:00
话说都上 V2EX 了,配置个代理不行吗?
我用的 podman ,附上配置
# cat /etc/containers/containers.conf.d/proxy.conf
[engine]
env=["HTTPS_PROXY=http://127.0.0.1:10809","HTTP_PROXY=http://127.0.0.1:10809"]
[containers]
http_proxy = false
mosby
2024-06-12 21:02:56 +08:00
统一回复一下:
@dream10201
这个使用场景不一样,全走代理只适合个人开发电脑或者节点很少的情况,节点很多的情况全都走代理速度慢又费流量

另外就是某些离线环境,这个镜像仓库缓存好之后把整个目录打包也可以离线使用

4 楼说的 nexus ,可以仔细看下仓库的内容,这个主要是用 nginx 域名分流以及劫持了 dns ,镜像 tag 是保持不变的
比如要部署 kubeflow 之类的一些组件是可以直接使用默认配置,不需要任何改动

还有 2 楼的端口问题,现在更新了一下默认 443 端口了,加了 ssl 证书生成脚本,只需要客户端信任 ca 证书

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1048655

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX