通过 cloudflare 白嫖个人 docker 镜像加快服务

打印 上一主题 下一主题

主题 805|帖子 805|积分 2415

不知为何,现在大多数的 docker hub 镜像加快站都停止服务,而官方站点又因某些缘故原由访问不到或耽误很高。所以,今天来记载一种通过 CloudFlare 搭建一个自己的镜像加快服务。
  0、必看!!!

注意: 此方案需要有域名才行,后续需要给域名绑定到 Cloudflare,发起直接在腾讯云-域名注册上面搞一个,选最便宜的就行。

1、注册 cloudflare

进入官网,自行举行注册操作
https://dash.cloudflare.com/
1.1 修改 DNS

找到你的域名注册商,然后修改 DNS 为phil.ns.cloudflare.com 和 marjory.ns.cloudflare.com,这样才华绑定到 cloudflare

1.2 绑定域名

打开 cloudflare,绑定站点,选择免费。
注册后绑定一个域名,这个域名的 DNS 需要设置 cloudflare 的才华绑定成功。

2、新建 workers

在左侧 workers and pages,然后新建,名字恣意起。没有过多的配置,直接完成!



3、编辑代码

3.1 编辑代码

点击右上角的编辑代码,进入

3.2 新建 index.html

如果所示,代码内里的docker.xxoo.team请更换成你自己的域名。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.   <meta charset="UTF-8">
  5.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.   <title>镜像使用说明</title>
  7.   <style>
  8.     body {
  9.       font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  10.       margin: 0;
  11.       padding: 0;
  12.       background-color: #f0f2f5;
  13.       display: flex;
  14.       flex-direction: column;
  15.       min-height: 100vh;
  16.     }
  17.     .header {
  18.       background: linear-gradient(90deg, #4e54c8 0%, #8f94fb 100%);
  19.       color: white;
  20.       text-align: center;
  21.       padding: 20px 0;
  22.     }
  23.     .container {
  24.       flex: 1;
  25.       display: flex;
  26.       justify-content: center;
  27.       align-items: center;
  28.       padding: 20px;
  29.     }
  30.     .content {
  31.       background: white;
  32.       border-radius: 8px;
  33.       box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  34.       padding: 20px;
  35.       max-width: 800px; /* 调整后的宽度 */
  36.       width: 100%;
  37.       font-size: 16px; /* 放大字体 */
  38.     }
  39.     .code-block {
  40.       background: #2d2d2d;
  41.       color: #f8f8f2;
  42.       padding: 10px;
  43.       border-radius: 8px;
  44.       margin: 10px 0;
  45.       overflow-x: auto;
  46.       font-family: "Courier New", Courier, monospace; /* 保持代码块的字体 */
  47.     }
  48.     .footer {
  49.       background: #444;
  50.       color: white;
  51.       text-align: center;
  52.       padding: 5px 0; /* 调低高度 */
  53.     }
  54.     .footer a {
  55.       color: #4caf50;
  56.       text-decoration: none;
  57.     }
  58.     @media (max-width: 600px) {
  59.       .content {
  60.         padding: 10px;
  61.         font-size: 14px; /* 在小屏幕上稍微减小字体 */
  62.       }
  63.     }
  64.   </style>
  65. </head>
  66. <body>
  67.   <div class="header">
  68.     <h1>镜像使用说明</h1>
  69.   </div>
  70.   <div class="container">
  71.     <div class="content">
  72.       <p>要设置加速镜像服务,你可以执行下面命令:</p>
  73.       <div class="code-block">
  74.         <pre>
  75. sudo tee /etc/docker/daemon.json &lt;&lt;EOF
  76. {
  77.         "registry-mirrors": ["https://docker.xxoo.team"]
  78. }
  79. EOF
  80.         </pre>
  81.       </div>
  82.           <p>如果执行了上述命令,配置了镜像加速服务,可以直接 pull 镜像:</p>
  83.       <div class="code-block">
  84.         <pre>
  85. docker pull halohub/halo:latest # 拉取 halo 镜像
  86.         </pre>
  87.       </div>
  88.           <p>因为Workers用量有限,在使用加速镜像服务时,你可以手动 pull 镜像然后 re-tag 之后 push 至本地镜像仓库:</p>
  89.       <div class="code-block">
  90.         <pre>
  91. docker pull docker.xxoo.team/halohub/halo:latest # 拉取 halo 镜像
  92.         </pre>
  93.       </div>
  94.     </div>
  95.   </div>
  96.   <div class="footer">
  97.     <p>Powered by Cloudflare Workers</p>
  98.     <p><a href="https://www.xxoo.team">www.xxoo.team</a></p>
  99.   </div>
  100. </body>
  101. </html>
复制代码
3.3 修改 worker.js


  1. import HTML from './index.html';
  2. export default {
  3.     async fetch(request) {
  4.         const url = new URL(request.url);
  5.         const path = url.pathname;
  6.         const originalHost = request.headers.get("host");
  7.         const registryHost = "registry-1.docker.io";
  8.         if (path.startsWith("/v2/")) {
  9.         const headers = new Headers(request.headers);
  10.         headers.set("host", registryHost);
  11.         const registryUrl = `https://${registryHost}${path}`;
  12.         const registryRequest = new Request(registryUrl, {
  13.             method: request.method,
  14.             headers: headers,
  15.             body: request.body,
  16.             redirect: "follow",
  17.         });
  18.         const registryResponse = await fetch(registryRequest);
  19.         console.log(registryResponse.status);
  20.         const responseHeaders = new Headers(registryResponse.headers);
  21.         responseHeaders.set("access-control-allow-origin", originalHost);
  22.         responseHeaders.set("access-control-allow-headers", "Authorization");
  23.         return new Response(registryResponse.body, {
  24.             status: registryResponse.status,
  25.             statusText: registryResponse.statusText,
  26.             headers: responseHeaders,
  27.         });
  28.         } else {
  29.         return new Response(HTML.replace(/{{host}}/g, originalHost), {
  30.             status: 200,
  31.             headers: {
  32.             "content-type": "text/html"
  33.             }
  34.         });
  35.         }
  36.     }
  37. }
复制代码
3.4 生存

   一定要生存!!!一定要生存!!!一定要生存!!!一定要生存!!!
  方法一(推荐): 选点左上角返回,会提示你生存

方法二: 点击右上角的下拉生存

4、部署

直接弹出部署,不用填任何东西,即可


5、绑定域名

系统默认分配的有域名,被墙无法访问,所以只能用自己的域名才行。

绑定成功需要等待几分钟,访问你的域名,如果出现如下页面就完成!

在宝塔中试一下,没问题~~

作者有话

喜欢请留一个关注,如果能转发分享,那最好不外啦。更多源码、软件等请关注微信公众号:干货助手,好饭不怕晚,现在关注正符合!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表