自建docker加速镜像,使用 Cloudflare Workers/Pages 部署加速教程

使用 Cloudflare Workers/Pages 部署 Docker Hub 镜像加速教程

本教程介绍如何利用 Cloudflare Workers 或 Pages 部署开源项目 CF-Workers-docker.iohttps://github.com/cmliu/CF-Workers-docker.io,实现私有 Docker Hub 镜像加速服务。


一、前提条件

  • GitHub 账号:用于 Fork 项目仓库
  • Cloudflare 账号:用于部署 Workers 或 Pages
  • 自定义域名 :已托管到 Cloudflare 的域名(如 example.com

提示 :如果还没有将域名托管到 Cloudflare,请参考 Cloudflare 域名托管教程


二、项目仓库


三、部署方式一:Pages 方式部署

步骤 1:创建 Pages 项目

  1. 登录 Cloudflare 控制台,进入 Worker 和 Pages概述新建

  2. 选择 Pages ,点击 连接到 Git

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

  4. 无需修改构建设置,直接点击 保存并部署

步骤 2:等待部署完成

  • 部署完成后,点击 继续处理项目

步骤 3:设置自定义域名

  1. 在项目设置中,选择 自定义域设置自定义域
  2. 输入您已托管到 Cloudflare 的域名的任意子域名(例如:hub.example.com)。
  3. 点击 激活域,等待 DNS 生效(通常几分钟内)。

步骤 4:验证部署

访问您的自定义域名(如 https://hub.example.com),应能正常代理到 Docker Hub 主页。


四、部署方式二:Workers 方式部署

步骤 1:创建 Worker

  1. 在 Cloudflare 控制台进入 Worker 和 Pages概述新建
  2. 选择 Worker ,将项目仓库中的 _worker.js 文件内容复制到 Worker 编辑器中。
  3. 保存并部署。

步骤 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-driverstorage-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:检查以下几点:

  1. 域名是否已正确托管到 Cloudflare
  2. DNS 解析是否已生效(可能需要等待几分钟)
  3. Cloudflare 的 SSL/TLS 设置是否为"完全"或"完全(严格)"

Q2:镜像拉取速度慢?

A:尝试以下方法:

  1. 检查 Cloudflare 的节点分布,选择离您较近的节点
  2. 配置多个镜像加速地址作为备用
  3. 检查本地网络环境

Q3:如何更新 Fork 的仓库?

A:在 GitHub 上执行以下操作:

  1. 进入您 Fork 的仓库
  2. 点击 "Sync fork" 按钮
  3. 选择 "Update branch" 同步最新代码
  4. 重新部署 Workers 或 Pages

Q4:环境变量设置后不生效?

A:确保:

  1. 环境变量名称拼写正确(区分大小写)
  2. 设置后已重新部署项目
  3. 清除浏览器缓存后重新访问

九、注意事项

  1. 域名安全:建议使用不常见的子域名,避免被轻易识别。
  2. 流量监控:定期检查 Cloudflare 的流量统计,防止滥用。
  3. 备用方案:建议配置多个镜像加速地址,提高可用性。
  4. 更新维护:关注原项目更新,及时同步 Fork 的仓库。
  5. 合规使用:请遵守相关法律法规,仅用于个人学习和研究。

十、参考链接


最后更新:2026年5月7日

相关推荐
枳实-叶1 小时前
【Linux驱动开发】第四天:dmesg日志全解+驱动加载失败极速排查
linux·运维·驱动开发
武超杰2 小时前
Nginx从入门到精通
运维·nginx
weixin_704266052 小时前
Nginx 反向代理 + 6 种负载均衡策略
运维·nginx
AI服务老曹3 小时前
架构师视角:如何构建支持GB28181/RTSP的异构AI视频平台?从Docker部署到源码交付的深度实践
人工智能·docker·音视频
fish_xk3 小时前
Linux开方工具
linux·运维·服务器
用户78937733908535 小时前
Docker 部署踩坑记录:从“构建失败”到“服务跑通”,以及为什么数据被清空了
python·docker
中科三方5 小时前
输入域名后无法访问?教你快速区分域名解析问题与服务器问题
运维·服务器
internet Boy5 小时前
桌面运维面试常见问题及标准答案(完整版)
运维