使用 Cloudflare Workers/Pages 部署 Docker Hub 镜像加速教程
本教程介绍如何利用 Cloudflare Workers 或 Pages 部署开源项目 CF-Workers-docker.io:https://github.com/cmliu/CF-Workers-docker.io,实现私有 Docker Hub 镜像加速服务。
一、前提条件
- GitHub 账号:用于 Fork 项目仓库
- Cloudflare 账号:用于部署 Workers 或 Pages
- 自定义域名 :已托管到 Cloudflare 的域名(如
example.com)
提示 :如果还没有将域名托管到 Cloudflare,请参考 Cloudflare 域名托管教程。
二、项目仓库
- 项目地址 :CF-Workers-docker.io
- 操作 :将该项目 Fork 到您自己的 GitHub 仓库。

三、部署方式一:Pages 方式部署
步骤 1:创建 Pages 项目
-
登录 Cloudflare 控制台,进入 Worker 和 Pages → 概述 → 新建 。

-
选择 Pages ,点击 连接到 Git 。


-
选择 GitHub ,授权并选择您 Fork 的仓库,点击 开始设置 。


-
无需修改构建设置,直接点击 保存并部署。
步骤 2:等待部署完成
- 部署完成后,点击 继续处理项目。
步骤 3:设置自定义域名
- 在项目设置中,选择 自定义域 → 设置自定义域 。

- 输入您已托管到 Cloudflare 的域名的任意子域名(例如:
hub.example.com)。 - 点击 激活域,等待 DNS 生效(通常几分钟内)。
步骤 4:验证部署
访问您的自定义域名(如 https://hub.example.com),应能正常代理到 Docker Hub 主页。
四、部署方式二:Workers 方式部署
步骤 1:创建 Worker
- 在 Cloudflare 控制台进入 Worker 和 Pages → 概述 → 新建。
- 选择 Worker ,将项目仓库中的
_worker.js文件内容复制到 Worker 编辑器中。 - 保存并部署。
步骤 2:设置自定义域名
- 在 Worker 设置中,添加自定义域名(需已托管在 Cloudflare)。
五、环境变量设置(防封措施)
为防止域名被封锁,可设置以下环境变量:
| 变量名 | 示例值 | 是否必填 | 备注 |
|---|---|---|---|
URL302 |
https://t.me/CMLiussss |
否 | 主页 302 跳转地址 |
URL |
https://www.baidu.com/ 或 nginx |
否 | 主页伪装(设为 nginx 则伪装为 nginx 默认页面) |
UA |
netcraft |
否 | 支持多元素,用空格或换行分隔 |
推荐配置 :设置 URL 变量为 nginx,可将主页伪装为 nginx 默认页面,不影响镜像拉取。
设置环境变量
- Pages 方式 :在项目设置 → 环境变量 中添加。
- Workers 方式 :在 Worker 设置 → 变量 中添加。
设置后需重新部署项目。
六、客户端配置
6.1 Docker Desktop 配置
编辑 ~/.docker/daemon.json,在现有配置中添加 registry-mirrors 字段:
json
{
"registry-mirrors": [
"https://hub.example.com"
]
}
注意 :请保留文件中的其他现有配置(如 log-driver、storage-driver 等),只添加 registry-mirrors 字段。
注意 :如果文件已有其他配置,请合并 registry-mirrors 字段,避免覆盖现有设置。
重启 Docker Desktop 使配置生效。
6.2 OrbStack 配置
编辑 ~/.orbstack/config/docker.json,在现有配置中添加 registry-mirrors 字段:
json
{
"registry-mirrors": [
"https://hub.example.com"
]
}
注意 :如果文件已有 proxies 配置,请保留并合并 registry-mirrors 字段,避免覆盖现有设置。
注意 :如果文件已有 proxies 配置,请保留并合并 registry-mirrors 字段,避免覆盖现有设置。
重启 OrbStack 使配置生效:
bash
# 方式一:命令行重启
orbctl shutdown && open -a OrbStack
# 方式二:在 OrbStack UI 中点击 Restart
6.3 Linux 系统配置
对于 Linux 系统,编辑 /etc/docker/daemon.json:
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://hub.example.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
七、验证配置
bash
# 查看当前 Registry 配置
docker info | grep -A 5 "Registry Mirrors"
# 测试拉取镜像
docker pull hello-world
# 测试拉取其他镜像
docker pull nginx:alpine
八、常见问题解答
Q1:部署后无法访问自定义域名?
A:检查以下几点:
- 域名是否已正确托管到 Cloudflare
- DNS 解析是否已生效(可能需要等待几分钟)
- Cloudflare 的 SSL/TLS 设置是否为"完全"或"完全(严格)"
Q2:镜像拉取速度慢?
A:尝试以下方法:
- 检查 Cloudflare 的节点分布,选择离您较近的节点
- 配置多个镜像加速地址作为备用
- 检查本地网络环境
Q3:如何更新 Fork 的仓库?
A:在 GitHub 上执行以下操作:
- 进入您 Fork 的仓库
- 点击 "Sync fork" 按钮
- 选择 "Update branch" 同步最新代码
- 重新部署 Workers 或 Pages
Q4:环境变量设置后不生效?
A:确保:
- 环境变量名称拼写正确(区分大小写)
- 设置后已重新部署项目
- 清除浏览器缓存后重新访问
九、注意事项
- 域名安全:建议使用不常见的子域名,避免被轻易识别。
- 流量监控:定期检查 Cloudflare 的流量统计,防止滥用。
- 备用方案:建议配置多个镜像加速地址,提高可用性。
- 更新维护:关注原项目更新,及时同步 Fork 的仓库。
- 合规使用:请遵守相关法律法规,仅用于个人学习和研究。
十、参考链接
最后更新:2026年5月7日