基于cloudflare-worker的docker代理实践

基于cloudflare-worker的docker代理实践

💡 原文中文,约2200字,阅读约需6分钟。
📝

内容提要

本文介绍了一种基于 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 的设置中,添加自定义域名并配置相应的子域名映射关系。

🏷️

标签

➡️

继续阅读