内容提要
本文介绍了一种基于 Cloudflare Worker 的 Docker 代理方案,用于高效访问官方 Docker 仓库和第三方 Docker 仓库。方案基于 cloudflare-docker-proxy,并记录了个人实践过程。通过配置和测试,可以高效地访问各种 Docker 仓库,提高镜像拉取速度和稳定性。
延伸解读
为何选择 Cloudflare Worker 做 Docker 代理
文章采用 Cloudflare Worker 作为代理层,核心是利用其全球网络和边缘计算能力。相比自建代理服务器,Worker 无需维护基础设施,且能通过自定义域灵活映射多个 Docker 仓库。这种方案尤其适合需要频繁拉取海外镜像的开发者,能在不改变 Docker 客户端习惯的前提下,提升访问速度和稳定性。
配置中的关键细节与注意事项
配置时需将 routes 对象中的域名替换为自己的域名,并在 Cloudflare 中添加对应的自定义域。注意 k8s.gcr.io 已迁移至 registry.k8s.io,若直接使用旧地址可能报 unauthorized 错误,建议使用 k8s.docker.个人域名 进行拉取。此外,quay.io 目前虽可访问,但提前配置代理可防范未来可能出现的访问问题。
实际使用与镜像标签重写
配置完成后,需编辑 /etc/docker/daemon.json 添加 registry-mirrors 并重启 Docker 服务。拉取第三方仓库镜像时,需将镜像地址中的域名替换为代理子域名,例如 docker pull k8s.docker.个人域名/kube-apiserver:v1.26.0,随后可用 docker tag 重写回原始镜像名,以保持与原有部署文件的兼容性。
Q&A
如何配置 Cloudflare Worker 以访问 Docker 仓库?
首先,新建一个 Worker,并将相应的代码复制到 Worker 中,配置映射 Docker 仓库的域名。建议将配置中的域名修改为个人域名。
为什么要为 quay.io 配置代理?
尽管目前 quay.io 访问尚可,但为了防止未来访问问题,建议配置代理以确保稳定性。
如何测试 Docker 仓库的访问是否有效?
可以通过执行 docker pull 命令来测试,例如拉取 mysql:5.7 镜像,确保配置有效。
在 Docker 中如何添加镜像配置?
编辑 /etc/docker/daemon.json 文件,添加 Docker 官方仓库的镜像配置,然后重启 Docker 服务使配置生效。
Cloudflare Worker 的 Docker 代理方案有什么优势?
该方案可以高效访问官方和第三方 Docker 仓库,提高镜像拉取速度和稳定性。
如何在 Cloudflare 中设置自定义域名?
在 Cloudflare 的设置中,添加自定义域名并配置相应的子域名映射关系。