使用 cloudflare pages 来加速访问 dockerhub 镜像。
Cloudflare 在 2024 年 12 月 3 日更新使用协议,此次更新 Cloudflare 明确说明不得将其服务作为代理使用,否则将被视为违反服务条款的行为可能会被封号。具体参见 Cloudflare Terms 第 2 项服务、第 2.2 项使用服务、第 2.2.1 项限制中。具体参见 Cloudflare更新服务条款明确说明不得将其作为代理使用 也不得优选IP。
本项目仅供学习和测试使用使用,请于 24 小时后取消 cloudflare 的部署。
请将本项目仓库 fork 到自己的 github 仓库,然后在 cloudflare pages 中新建项目来使用。
1.使用 cloudflare 账号登录其 dashboard 后台,选择 Workers 和 Pages 菜单,然后点击 概述,接着点击 创建 按钮,在打开的页面中选择 Pages 选项卡:
图1
选择 git 模式进行部署。
2.选择你 clone 好的项目,点击 开始设置 按钮:
图2
3.除了项目名字和输出目录 public 之外,所有配置项都使用默认值即可,点击 保存并部署 按钮:
图3
4.经过短暂时间的等待,如果你看到如下界面,恭喜你部署成功:
图4
5.点击 继续处理项目按钮,在展示的页面中点击 访问站点 链接,即可验证站点的部署情况,不过默认需要等几分钟才能打开网站。
图5
6.网站可访问后展示效果:
图6
更多详细使用教程参见 cloudflare page 教程(一)项目初始化 。
当前项目部署完成后,必须使用 docker login 命令进行登录,才能正常使用。否则进行 docker pull 镜像的时候,会如下报错:
Error response from daemon: Head "https://你的部署域名/v2/library/镜像名/manifests/latest": unauthorized: Unauthorized
同时需要注意,docker login 默认会登录 docker hub 镜像站,但是我们的自己搭建的 Pages 网站使用的域名和 docker.io 不是一个域名,所以需要在调用 docker login 命令时追加 Pages 网站部署域名,即 docker login 你的部署域名
。
例如你的镜像站域名是 docker-registry-xxx.pages.dev
,那么需要保证调用 docker login docker-registry-xxx.pages.dev
是成功的。
可以通过配置若干环境变量,来对镜像代理的行为做控制。
镜像站允许的用户列表,多个用户之间用英文逗号分隔,默认为空。WHITE_LIST
生效后,在拉取任何镜像时,你需要确保 docker login
(或者 podman login
) 命令之前已经调用成功,否则后端读取不到登录用户,会直接报错,不会再拉取镜像。
cloudflare pages 解析出来的域名可能在某些运营商上无法访问,这时可以借助优选 IP 项目 CloudflareSpeedTest ,找到一个本地访问最好的 IP ,配置到本地 hosts 中。注意优选 IP 依然是有违 cloudflare 条款的。