自建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日

相关推荐
鹤落晴春12 小时前
【K8s】Pod调度、configMaps
云原生·容器·kubernetes
极客先躯13 小时前
高级java每日一道面试题-2026年02月02日-实战篇[Docker]-如何实现容器的持久化存储?
docker·容器·面试宝典·持久化·存储·韵味·java高级面试题
云计算磊哥@13 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
天天进步201514 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
My is 李豆14 小时前
CentOS 7 安装 Docker 完整教程(含 docker-compose 插件)
docker·eureka·centos
极客先躯14 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷
Java面试题总结15 小时前
Linux-Ubantu-贴士-apt的地盘
linux·运维·服务器
志栋智能15 小时前
超自动化巡检:提升MTTR,缩短业务影响时间
运维·自动化
kong@react15 小时前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker
睡不醒男孩03082316 小时前
第八篇:如何构建一站式 PostgreSQL 性能优化与智能管控平台?从盲目排查到 CLup 自动化运维演进
运维·postgresql·性能优化