2024最新基于Cloudflare Workers搭建Docker Hub镜像加速服务
本篇教程将带你通过 Cloudflare 的 Workers 服务创建一个简单的 Docker 镜像代理。通过这个代理,你可以加速从 Docker Hub 拉取镜像,特别是在国内环境下显著提升下载速度。
前期准备
- 注册 Cloudflare 账号:如果还没有 Cloudflare 账号,先前往 Cloudflare官网 注册一个。
- 关于域名:虽然你可以自己绑定一级域名,但即使没有,Cloudflare 也会免费提供一个四级域名。不过这个四级域名可能有些难记,但足够使用。
- Worker 请求限制:免费账号每个月可以免费使用 10 万次请求,且每分钟最多可处理 1000 次请求。
一、创建 Worker
登录 Cloudflare 仪表盘
登录到 Cloudflare 后,进入仪表盘。你会看到下方的界面:- 进入 Workers 和 Pages 页面
在左侧菜单中,点击 “Workers 和 Pages”,进入相关页面。 创建 Worker
在这个页面点击 “创建应用程序”,然后选择“创建 Worker”。命名你的 Worker
给你的 Worker 起一个名字,Cloudflare 会基于你的用户名自动生成一个免费的四级域名,供 Worker 使用。编辑代码
点击创建好的 Worker 后,进入编辑页面。Cloudflare 会为你加载一个基于 Web 的 IDE,加载可能稍慢,请耐心等待。
加载完成后界面如下:加载完成后,将默认代码替换为以下代码:
export default { async fetch(request) { const url = new URL(request.url); const path = url.pathname; const originalHost = request.headers.get("host"); const registryHost = "registry-1.docker.io"; if (path.startsWith("/v2/")) { const headers = new Headers(request.headers); headers.set("host", registryHost); const registryUrl = `https://${registryHost}${path}`; const registryRequest = new Request(registryUrl, { method: request.method, headers: headers, body: request.body, redirect: "follow", }); const registryResponse = await fetch(registryRequest); console.log(registryResponse.status); const responseHeaders = new Headers(registryResponse.headers); responseHeaders.set("access-control-allow-origin", originalHost); responseHeaders.set("access-control-allow-headers", "Authorization"); return new Response(registryResponse.body, { status: registryResponse.status, statusText: registryResponse.statusText, headers: responseHeaders, }); } else { let HTML = 'https://{{host}}'; return new Response(HTML.replace(/{{host}}/g, originalHost), { status: 200, headers: { "content-type": "text/html" } }); } } }
- 保存代码
编辑完成后,按下Ctrl + S
保存代码。 部署 Worker
点击右上角的 “部署” 按钮,成功后会显示绿色的提示框,说明你的 Worker 已成功部署。查看部署信息
点击左上角的返回按钮<-d
,返回页面即可查看 Worker 的部署信息。
二、配置域名
绑定自定义域名
如果你已经在 Cloudflare 托管了自己的域名,可以在设置中绑定它。Cloudflare 会自动为你创建相关的解析记录。- 禁用四级域名
如果绑定了自定义域名,你可以选择禁用 Cloudflare 提供的四级域名,只使用自己的域名访问。
三、配置 Docker
现在 Worker 已经成功部署,可以配置 Docker 来使用这个代理。
修改 Docker 配置
在你的服务器上,找到并编辑 Docker 的配置文件/etc/docker/daemon.json
,添加以下内容:{ "registry-mirrors": ["https://<你的四级域名或自定义域名>"] }
例如:
{ "registry-mirrors": ["https://d.izenvip.workers.dev"] }
拉取镜像
你可以通过以下命令拉取 Docker 镜像,使用 Cloudflare Worker 提供的代理来加速:docker pull d.izenvip.workers.dev/library/alpine:latest
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/system/cloudflare-workers-docker-hub.html
转载时须注明出处及本声明