白嫖Cloudflare Workers 搭建 Docker Hub镜像加速服务|

news2024/11/19 6:37:54

简介

基于Cloudflare Workers 搭建 Docker Hub镜像加速服务。

  1. 首先要注册一个Cloudflare账号。

  2. Cloudflare账号下域名的一级域名,推荐万网注册个top域名,再转移到Cloudflare,很便宜的。

  3. 注意 Worker 每天每免费账号有次数限制,为10万次。每分钟为1000次。

步骤

登录到CF的仪表盘 https://dash.cloudflare.com/

点击 workers-and-pages > 创建应用程序 > 创建 Worker > 点击保存 >点击完成 > 编辑代码

编辑代码

编辑 worker.js 文件

编辑覆盖后,ctrl + s 即可保存。

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: "manual",
            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 {
        return new Response(HTML.replace(/{{host}}/g, originalHost), {
            status: 200,
            headers: {
            "content-type": "text/html"
            }
        });
        }
    }
}

编辑 docker.html 文件

点击新建文件,创建此文件。ctrl + s 即可保存。

<!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 &lt;&lt;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://songxwn.com" target="_blank">访问博客 songxwn.com</a></p>
    </div>
</body>
</html>

保存部署并配置触发器

上述两个文件的代码保存后,选择部署 > 保存并部署

点击左上角的项目连接,配置触发器。(自定义域名访问)

自定义域名访问

访问界面和配置docker如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1811706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

48.HTTP 规范规定,跟随重定向时必须使用 GET 方法

起因&#xff1a; 今天在练习一个Django功能时&#xff0c;把form的method设置为POST&#xff0c;但是实际提交时&#xff0c;一直是GET方法。最后&#xff0c;从下面这张图发现了端倪&#xff1a; 第一次是method是POST方法&#xff0c;被重定向时&#xff0c;变成了GET。 继…

综合型驱鸟装置:光伏电站集束冲击波驱鸟器

光伏电站作为绿色、清洁的能源生产方式&#xff0c;正在全球范围内得到快速发展。在光伏电站的建设和运营过程中&#xff0c;鸟类活动所带来的影响逐渐凸显&#xff0c;成为电站管理者需要面对的重要问题。在此背景下&#xff0c;光伏电站驱鸟器的需求也不断增长。 目前市场上的…

echart盒子没有跟着当前div大小变化而自适应

一、问题描述 当echarts图表在一个盒子里的时候&#xff0c;盒子大小变化了&#xff0c;但是图表没有跟着自适应&#xff0c;比如这样&#xff0c;盒子变大了&#xff0c;但是图表没变化 二、解决方法 在盒子大小更改的同时&#xff0c;调用图表的resize方法&#xff0c;记…

RERCS系统开发实战案例-Part02 创建BOPF对应的业务对象(Business Object)

1、通过事务码 BOBF创建业务对象 2、输入debug&#xff0c;进入编辑模式新建BO对象&#xff1b; 选择对应的BO对象属性类别&#xff1a; 3、激活BO对象 接口页签&#xff1a; 属性页签&#xff1a;自动带出标准的常量 改接口类部分源码&#xff1a; 4、BO对象Node Elemen…

1、链接(link)

链接的作用 链接&#xff1a;将各种代码和数据片段收集组成一个单一文件的过程&#xff0c;这个文件可以加载&#xff08;复制&#xff09;到内存并执行。 分为&#xff1a;编译时、加载时&#xff08;加载器加载到内存并执行时&#xff09;、运行时 1、构造大型程序 2、避免…

绿色转型,节能攻坚

随着人口增长和经济发展&#xff0c;资源短缺和环境污染问题愈发严重&#xff0c;绿色转型和节能已成为我们共同的责任。为了推动环保事业的发展&#xff0c;阜阳善于善行志愿者团队&#xff0c;参与了本年度以“绿色转型&#xff0c;节能攻坚”为主题的全国节能宣传周活动。这…

果汁机锂电池充电,5V升压12.7V 升压恒压芯片SL1571B

在现代化的日常生活中&#xff0c;果汁机已经逐渐成为了许多家庭厨房的必备电器。随着科技的不断进步&#xff0c;果汁机的性能也在不断提升&#xff0c;其中锂电池的应用更是为果汁机带来了前所未有的便利。而5V升压12.7V升压恒压芯片SL1571B&#xff0c;作为果汁机锂电池充电…

使用使用rundll32 调用指定dll的方法

使用使用rundll32 调用指定dll的方法 //顾名思义&#xff0c;"执行32位的DLL文件"。它的作用是执行DLL文件中的内部函数&#xff0c;这样在进程当中&#xff0c; 只会有Rundll32.exe&#xff0c;而不会有DLL后门的进程&#xff0c;这样&#xff0c;就实现了进程上的隐…

【万方数据库爬虫简单开发(自用)】

万方数据库爬虫简单开发&#xff08;自用&#xff09;&#xff08;一&#xff09; 使用Python爬虫实现万方数据库论文的搜索并获取信息1.获取url2.输入关键词3.使用BeautifulSoup解析4.获取文章标题信息 使用Python爬虫实现万方数据库论文的搜索并获取信息 后续会逐步探索更新…

svg图标封装--基于vue2适配uniapp全端

第一步&#xff1a;新建svg目录 在static目录下新建svg目录,后将所有svg图标都放到此文件夹 第二步&#xff1a;封装注册全局组件 (注意&#xff1a;在根目录下新建components文件夹) 代码实现&#xff1a; <template><!-- svg图标 --><image :style"{ …

欢乐钓鱼大师攻略:自动钓鱼大全解析!哪家云手机能自动钓鱼?

《欢乐钓鱼大师》是一款颇受欢迎的钓鱼模拟游戏&#xff0c;吸引了大量玩家参与。无论你是新手还是老玩家&#xff0c;这款游戏都提供了丰富的内容和玩法&#xff0c;今天我们将详细介绍如何通过合理的策略和技巧来提升游戏体验和效率。 一、初步了解《欢乐钓鱼大师》 1. 游戏…

蝴蝶号小店,玩法介绍~

我是王路飞。 目前电商行业最火的项目&#xff0c;已经不再是抖音小店了。 毕竟抖店都上线好几年了&#xff0c;红利期早就过了&#xff0c;再加上现在抖音上的商家逐渐开始内卷。 众多商家纷纷开始寻找电商行业最后的风口。 因此&#xff0c;蝴蝶号小店逐渐开始进入大众视…

面试官问:百万QPS秒杀系统该如何设计

今天就带大家体系化的梳理下&#xff0c;大厂级高并发的秒杀系统该如何设计。 带大家跳出程序员思维&#xff0c;从架构师的视角分析下&#xff0c;大厂级、高并发的秒杀系统该如何设计&#xff1f; 秒杀系统的三个问题 问题一&#xff1a;为什么需要秒杀系统&#xff1f; 简…

人人必看:人工智能成熟后,被社会广泛使用后,可能被取代的行业有哪些,以及AI后新兴的行业和职位有哪些?

随着人工智能技术的不断成熟和广泛应用&#xff0c;许多行业和职位可能会受到影响&#xff0c;一些可能被取代&#xff0c;而另一些则会因为AI技术的引入而新兴。人人必看&#xff1a;人工智能成熟后&#xff0c;被社会广泛使用后&#xff0c;可能被取代的行业有哪些&#xff0…

df = pd.read_excel(‘c:\User\18343\Desktop\wpsdata.xlxs‘)路径读不到

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

为啥影像导入GIS后,颜色会变?两个方法解决它!

不知道你有没有遇到过这种情况&#xff0c; 影像的正常颜色是这样的—— 可是导入到GIS后&#xff0c; 颜色竟然变了&#xff0c; 而且变得很奇怪—— 你也不必惊讶&#xff0c; 极大概率是因为数据源类型没有正确识别&#xff0c; 有两个方法可以解决这个问题—— 方法一…

Threejs-07、几何体_顶点_索引_面之BufferGeome

一、 const gemometry new THREE.BufferGeometry(); //创建顶点数据 ,顶点是有序的&#xff0c;每三个为一个顶点&#xff0c;逆时针为正面。 const vertices new Float32Array([-1.0,-1.0,0.0,1.0,-1.0,0.0,1.0,1.0,0.0,1.0,1.0,0.0,-1.0,1.0,0.0,-1.0,-1.0,0.0, ]) gemom…

申办乙级幕墙设计资质:企业安全生产与环保要求

在申办乙级幕墙设计资质时&#xff0c;企业安全生产与环保要求是不可忽视的重要方面。以下是关于企业安全生产与环保要求的详细解读&#xff0c;以分点表示和归纳的方式呈现&#xff1a; 一、安全生产要求 安全生产管理制度&#xff1a;企业应建立健全安全生产管理制度&#xf…

操作系统期末复习(大题)

1. 进程调度 周转时间作业完成时刻-作业到达时刻 带权周转时间周转时间/服务时间 平均周转时间各个作业周转时间之和/作业个数 操作系统&#xff1a;周转时间和其他时间_系统为作业提供的时间-CSDN博客 2. 进程调度 3. 调度算法 4. 临界区互斥访问问题 即证明是否满足互斥&a…

hadoop和hbase对应版本关系

https://hbase.apache.org/book.html#configuration