使用 Caddy 反向代理 dockerhub 需要几步?

使用 Caddy 反向代理 dockerhub 需要几步?

💡 原文中文,约3100字,阅读约需8分钟。
📝

内容提要

几个月前,中国大陆失去了公共的dockerhub镜像。有人使用Cloudflare Workers、nginx和自建registry来自建dockerhub反代。作者选择使用caddy,因为配置简单且访问质量好。作者使用mitmproxy抓包,配置dockerd使用本机8080端口进行代理。作者在systemd服务中设置代理环境变量。作者成功拉取了一个较小的docker镜像。作者解释了三个域名需要反代的原因,并给出了反代的方法。作者还介绍了如何设置docker使用反代。最后,作者建议验证是否成功反代。

🎯

关键要点

  • 几个月前,中国大陆失去了公共的dockerhub镜像,导致用户无法拉取镜像。

  • 作者选择使用caddy进行dockerhub反代,因其配置简单且访问质量好。

  • 使用mitmproxy抓包以了解docker从dockerhub拉取镜像的过程。

  • 在systemd服务中设置代理环境变量,以便docker能够通过本地代理拉取镜像。

  • 成功拉取了一个较小的docker镜像,验证了反代的有效性。

  • 三个域名需要反代,分别是registry-1.docker.io、auth.docker.io和production.cloudflare.docker.com。

  • 提供了反代的具体方法,包括如何处理响应头中的字段。

  • 介绍了如何设置docker使用反代,包括修改docker命令和daemon.json配置。

  • 建议通过抓包验证反代是否成功。

延伸问答

为什么中国大陆失去了公共的dockerhub镜像?

由于众所周知的原因,中国大陆境内失去了所有公共的dockerhub镜像。

使用Caddy进行dockerhub反代的优势是什么?

Caddy的配置简单,且通过境外服务器进行反向代理的访问质量优于Cloudflare。

如何设置docker使用反代?

可以在docker命令前加上反代域名,或修改/etc/docker/daemon.json文件设置registry-mirrors。

反代过程中需要处理哪些域名?

需要反代的域名包括registry-1.docker.io、auth.docker.io和production.cloudflare.docker.com。

如何验证dockerhub反代是否成功?

可以通过抓包检查请求是否走了自己的域名,或者观察镜像下载速度。

在systemd服务中如何设置代理环境变量?

可以在/etc/systemd/system/docker.service.d/http-proxy.conf中设置HTTP_PROXY和HTTPS_PROXY环境变量。

➡️

继续阅读