利用cloudflare的Workers和Pages来反代DockerHub加速
温馨提醒:您当前浏览的文章已经超过125天了,可能与实际有所不符,酌情参考!
目录
前言
因为某些不可抗拒的原因,所以Docker拉取镜像目前很困难,就跟当初github拉取项目一样,不加了代理加速什么的,难~!今天教大家利用cloudflare的Workers和Pages来反代DockerHub加速,这样就可以实现加速拉取了。不过有优点自然有缺点,那就是有次数限制,仅个人使用完全没问题。
记得替换后要重启docker服务systemctl restart docker
创建cf帐号
以下步骤是老的步骤,新的没配图凑合看吧
直接去cf的官网QQ邮箱即可 https://dash.cloudflare.com/sign-up
配置域名等
以下步骤是老的步骤,新的没配图凑合看吧
然后我们点击左边的
workers
然后如图所示,自定义您的子域名,方便记住就行
然后选择0元
的这个,后续验证邮箱,这应该不需要教吧,验证邮箱总会吧。
以上步骤是老的步骤,新的没配图凑合看吧
配置Workers和Pages
- 首先我们点击左边的Workers和Pages然后点击概述,再右边会出现创建应用程序,我们点击进入
- 然后我们点下图所示的箭头所指位置创建Worker
- 为项目命名这里,输入你要为这个项目取的名字,方便自己好认。好了后记得保存,点击完成
- 跳转页面后如下图所示,就会有成功提示,我们点击右边的编辑代码
- 我们就来到了编辑页面,把图下面的代码黏贴进去,(记得将原有的覆盖!)
import HTML from './docker.html';
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);
const responseHeaders = new Headers(registryResponse.headers);
responseHeaders.set("Access-Control-Allow-Origin", "*");
responseHeaders.append("Access-Control-Allow-Headers", "Authorization, Content-Type");
return new Response(registryResponse.body, {
status: registryResponse.status,
statusText: registryResponse.statusText,
headers: responseHeaders,
});
} else {
return new Response(HTML.replace(/{{host}}/g, originalHost), {
status: 200,
headers: {
"Content-Type": "text/html",
},
});
}
}
}
- 完成上述操作后,我们点击左边的类似于黏贴的图标,也可以参考下图逐步点击。记得输入docker.html创建html,然后黏贴下面代码进去(小提示一下,如果输入错误,可以点击对应的文本,然后F2就可以修改文本名。)
创建的docker.html要跟worker.js开头的from后面要对应!<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>镜像使用说明</title> <style> body { font-family: 'Roboto', sans-serif; margin: 0; padding: 0; background-color: #f4f4f4; } .header { background: linear-gradient(135deg, #667eea, #764ba2); color: #fff; padding: 20px 0; text-align: center; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .container { max-width: 800px; margin: 40px auto; padding: 20px; background-color: #fff; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 10px; } .content { margin-bottom: 20px; } .footer { text-align: center; padding: 20px 0; background-color: #333; color: #fff; } pre { background-color: #272822; color: #f8f8f2; padding: 15px; border-radius: 5px; overflow-x: auto; } code { font-family: 'Source Code Pro', monospace; } a { color: #4CAF50; text-decoration: none; } a:hover { text-decoration: underline; } @media (max-width: 600px) { .container { margin: 20px; padding: 15px; } .header { padding: 15px 0; } } </style> <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&family=Source+Code+Pro:wght@400;700&display=swap" rel="stylesheet"> </head> <body> <div class="header"> <h1>镜像使用说明</h1> </div> <div class="container"> <div class="content"> <p>为了加速镜像拉取,你可以使用以下命令设置 registry mirror:</p> <pre><code>sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://{{host}}"] } EOF</code></pre> <p>为了避免 Worker 用量耗尽,你可以手动 pull 镜像然后 re-tag 之后 push 至本地镜像仓库:</p> <pre><code>docker pull {{host}}/library/alpine:latest # 拉取 library 镜像 docker pull {{host}}/coredns/coredns:latest # 拉取 coredns 镜像</code></pre> </div> </div> <div class="footer"> <p>Powered by Cloudflare Workers</p> <p><a href="https://www.luomubiji.host" target="_blank" rel="noreferrer noopener">访问博客 落幕笔记</a></p> </div> </body> </html>
- 然后我们点击右边的部署即可,成功的话会在页面下方出现绿色的提示:版本已保存,如果出现
红色提示
,请你去上面的创建docker.html,改成
其他的名称,如:luomu.html
,然后在worker.js
开头的from后面
./docekr.html替换
成./luomu.html。再进行部署
!必须提示版本已保存!
记得替换后要重启docker服务systemctl restart docker - 以上操作完毕后,我们返回,点击左上角返回,点击
设置
--触发器
--添加自定义域
--输入前缀+域名,例如,你一开始在cloudflare里添加的域名是xxx.com,那你在这里就自定义一个前缀,无所谓什么,比如123然后加上你域名,填写就是123.xxx.com,这样的话你就可以访问123.xxx.com就能展示页面了
记得替换后要重启docker服务systemctl restart docker - 上述操作完毕后,我们就可以直接访问你
刚才
填写的域访问
了。(这里不建议
把你搭建的分享出去,因为谁知道会怎么传播,因为cloudflare虽然免费
,但是也是有次数限制
的。还是建议自己需要自己搭建
!)记得替换后要重启docker服务systemctl restart docker
最后提醒
- 这个有免费次数,所以建议搭建来自用!
- 关于怎么替换加速地址,复制你搭建的域名地址,去docker/daemon.json文件替换[]内原有的地址即可!记得替换后要重启docker服务systemctl restart docker 这是linux的不同系统可能不一样,请百度就行了
阅读剩余
版权声明:
作者:余生安好
链接:https://www.luomubiji.host/workers.html
文章版权归作者所有,未经允许请勿转载。
THE END