基于Cloudflare搭建私有Docker镜像源

news2024/11/15 4:26:49

在这里插入图片描述

周四原本不是发文的日子,主要因为两个原因:

第一个原因是总有人留言说 Docker 用不了,第二个原因是看了下上个月的阅读量,和之前比实在有点惨淡,除了文章总被人搬运外,我估计可能跟第一个原因多少还是有点关系的

看来不解决这个问题,以后就得换方向了 😂


什么是 CF-Workers-docker.io ?

CF-Workers-docker.io 是一个基于 Cloudflare WorkersDocker 镜像代理工具。它能够中转对 Docker 官方镜像仓库的请求,解决一些访问限制和加速访问的问题。

什么是 Cloudflare Workers ?

Cloudflare Workers 是一种无服务器计算平台,可以在全球分布式网络上运行自定义的 JavaScript 代码。每个免费账号每天有 10 万次的请求额度,但每分钟只能有 1000 个请求的突发速率限制。

准备

首先需要有 cloudflare 账号,这块可以自行百度,或者阅读文末的参考文档。但如果你访问不了 https://dash.cloudflare.com,就不建议往下看了,因为还是有点折腾的

其次你要在 cloudflare 中解析域名,虽然 Cloudflare Workers 会自动生成域名,但这个默认的域名你有可能无法访问。

如果你有科学的手段,其实是不用这么折腾的

部署

左侧菜单中 WorkersPages --> 创建

在这里插入图片描述

创建 Worker

在这里插入图片描述

默认有个 Hello World 示例

  • ① 可以改名,比如 docker
  • ③ 是代码示例,不用管

直接点 部署

在这里插入图片描述

编辑代码

在这里插入图片描述

将来自:https://github.com/cmliu/CF-Workers-docker.io/blob/main/_worker.js 的代码粘贴进去

从路由表看,不仅仅是支持 docker hub,还有我们常用到的 ghcr.io

记得修改成自己的域名,如果没有的话,直接用 ② 处显示的默认域名也可以,修改完成后点 Command + s 或者 ctrl + s 保存

  • 如果你使用默认的 workers.dev 域名,有可能会由于 DNS 污染无法访问,所以建议你还是用自己的域名;
  • 仅支持 Cloudflare 上处于活动状态的域,也就是说要有在 Cloudflare 解析的域名才行;

在这里插入图片描述

注意,文件名需要是 worker.js,因为在 wrangler.toml 中的默认设定是这样的

接下来需要点 部署,让代码生效

在这里插入图片描述

如果你预览显示的是 docker hub 的主页

如果前面代码中填的是自己的域名,还需要通过 添加自定义域 绑定一下

在这里插入图片描述

添加完成后

在这里插入图片描述

使用

假设我们前面部署的 worker 域名是 docker.laosu.tech

官方镜像路径前面加域名

正常下载镜像是👇这样的

# 只有镜像名的镜像
docker pull alpine

# 用户名/镜像名的镜像
docker pull alpine/git

现在需要把域名加在前面

# 只有镜像名,还需要增加 library 充当用户名
docker pull docker.laosu.tech/library/alpine

# 用户名/镜像名
docker pull docker.laosu.tech/alpine/git

有时候速度有点慢,感觉上只有几十K,一个镜像要下好几次才能完成,凑合用吧

下载完成后,镜像的名字是 docker.laosu.tech/library/alpine 而不是 alpine,这点需要特别注意

在这里插入图片描述

如果想用原始的名称,和之前老苏介绍过的 dockerproxy 一样,需要多几个步骤

下面以 alpine 为例

# 重命名镜像
docker tag docker.laosu.tech/library/alpine:latest alpine:latest

# 删除代理镜像
docker rmi docker.laosu.tech/library/alpine:latest

这时候再看,显示的就是默认的注册表 Docker Hub

在这里插入图片描述

设置注册表

如果你习惯使用注册表,在设置之前搜索镜像应该是👇这样的

设置 --> 新增 --> 编辑注册表

  • 注册表名称:这个随便你
  • 注册表 URL:填入 worker 的域名 https://docker.laosu.tech

在这里插入图片描述

现在可以搜到结果了

在这里插入图片描述

可以直接下载镜像,显示的注册表名称就是你前面设置的,但是实际上镜像的全称还是 docker.laosu.tech/alpine/git

参考文档

cmliu/CF-Workers-docker.io: 这个项目是一个基于 Cloudflare Workers 的 Docker 镜像代理工具。它能够中转对 Docker 官方镜像仓库的请求,解决一些访问限制和加速访问的问题。
地址:https://github.com/cmliu/CF-Workers-docker.io

Cloudflare教程:如何注册账户、购买域名、开启免费CDN服务? - 掘金随想
地址:https://oyouoo.com/cloudflare-tutorial/

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

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

相关文章

计算机基础(Windows 10+Office 2016)教程 —— 第4章 计算机网络与Internet(上)

第4章 计算机网络与Internet 4.1 计算机网络概述4.1.1 计算机网络的定义4.1.2 计算机网络的发展4.1.3 计算机网络的功能4.1.4 计算机网络体系结构和TCP/IP 参考模型 4.2 计算机网络的组成和分类4.2.1 计算机网络的组成4.2.2 计算机网络的分类 4.3 网络传输介质和通信设备4.3.1 …

【Unity】3D功能开发入门系列(二)

Unity3D功能开发入门系列(二) 一、资源(一)资源文件(二)场景文件(三)资源包(四)Unity 资源商店(五)项目资源的导入 二、父子关系&…

【C语言篇】数据在内存中的存储(超详细)

文章目录 数据在内存中的存储二进制和进制转换基本概念进制转换十进制转二进制二进制转八进制和十六进制 整数在内存中的存储反码原码补码大小端字节序和字节序判断什么是大小端?为什么有大小端 浮点数在内存中的存储题目提出浮点数存的过程浮点数取的过程 题目解析…

Java语言程序设计——篇十一(2)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

算法导论 总结索引 | 第五部分 第二十一章:用于不相交集合的数据结构

一些应用涉及 将n个不同的元素分成一组不相交的集合。寻找包含给定元素的唯一集合 和 合并两个集合 1、不相交集合的操作 1、一个不相交集合 数据结构 维持了 一个不相交动态集的集合 S {S_1, S_2,…, S_n}。用一个代表 来标识每个集合,它是这个集合的某个成员。…

IoTDB 入门教程 企业篇④——安全控制 | 白名单、审计日志、登录日志和操作日志

文章目录 一、前文二、白名单2.1 配置文件iotdb-common.properties2.2 配置文件white.list2.3 注意事项 三、审计日志3.1 Cli操作日志3.2 RESTful操作日志3.3 MQTT操作日志3.4 Java操作日志3.5 C#操作日志3.6 Python操作日志 四、参考 一、前文 IoTDB入门教程——导读 IoTDB企业…

C语言9~10 DAY(合集)

数组的概念 什么是数组 数组是相同类型,有序数据的集合。 数组的特征 数组中的数据被称为数组的元素,是同构的 数组中的元素存放在内存空间里 (char player_name[6]:申请在内存中开辟6块连续的基于char类型的变量空间) 衍生概念&#x…

力扣高频SQL 50题(基础版)第三十七题

文章目录 力扣高频SQL 50题(基础版)第三十七题176.第二高的薪水题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题(基础版)第三十七题 176.第二高的薪水 题目说明 Employee 表: ----------------- …

【传知代码】基于标签相关性的多标签学习(论文复现)

在当今信息爆炸的时代,数据中包含的标签信息对于理解和分析复杂问题至关重要。在诸如文本分类、图像识别和推荐系统等应用中,如何有效地利用标签相关性提升多标签学习的效果成为了研究的热点之一。基于标签相关性的多标签学习方法,通过挖掘不…

存储届的奥运竞技 | 400层3D NAND最快2025到来~

随着内存巨头之间的高带宽内存 (HBM) 竞争日益激烈,NAND 存储器领域的竞争也在升温。据韩国媒体《etnews》报道,SK 海力士正在研发 400 层 NAND 闪存技术,计划在 2025 年底前准备好这项技术以实现量产。 报道称,SK 海力士目前正在…

AcWing并查集

建议先看这个 Bilibili------------------>图论——并查集(详细版) 其实M 1 2就是把1的祖先改成了2,然后M 3 4就是把3的祖先改成了4,然后查询这两数1,2的祖先是不是同一个,3,4的祖先是不是同一个,1,3的祖先是不是同…

【期货】收盘点评。昨天说的,p2409棕榈油在今天或者周一会走出行情

收盘点评 昨天说的,p2409棕榈油在今天或者周一会走出行情。事实就是如此。震荡了几天了,波幅不大的来回震荡,其实主力是不想震荡的,但是不震荡自己的货和行情走不出来。所以我昨天就说,应该就是这一两天会走出一波小行…

⑤【从0制作自己的ros导航小车:上、下位机通信篇】上、下位机串口DMA通信

从0制作自己的ros导航小车 前言一、准备工作二、下位机端(STM32)三、上位机端(旭日x3派)四、测试 系列文章: ①【从0制作自己的ros导航小车:介绍及准备】 ②【从0制作自己的ros导航小车:下位机篇…

一站式解决方案:打造无缝连接的跨渠道客户服务体验

在当今这个数字化时代,客户与企业之间的互动已不再局限于单一渠道。从社交媒体、在线聊天、电子邮件到电话热线,甚至是实体店面,客户期望能够随时随地、无缝切换地获得一致且高效的服务体验。因此,构建一站式解决方案,…

商城系统审计代码审计

1 开源组件通用性漏洞审计 1.1 fastjson漏洞审计与验证 1.1.1 相关知识 Fastjson是Alibaba开发的Java语言编写的高性能JSON库,用于将数据在JSON和Java对 象之间相互转换。 Fastjson反序列化漏洞简单来说是出现在将JSON数据反序列化过程中出现的漏洞。 攻击者可以传入一个恶…

算法小白的进阶之路(力扣6~8)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

对象属性值对比(支持复杂对象)

文章目录 前言一、如何对比二、开始编码三、使用结果示例总结 前言 需求如下: 对比两个bean中的内容,返回其中属性的值不一致的完整信息,包括: 属性 新值 旧值 一、如何对比 例如我有一个这的类型: public class Tel {private String name;private String tel; …

学习笔记第十七天

1.链表 1.1链表尾插 void push_back(struct Node *pHead,int n)//尾插 {if(isEmpty(pHead)){push_front(pHead,n);}else{struct Node *p pHead->next; while(p->next !NULL){p p->next;}struct Node *pNew malloc(sizeof(struct Node));p->nextpNew;pNew->n…

C++ bind复杂回调逻辑分析

回调函数基本知识回顾 回调函数是什么 函数指针或者函数对象作为参数传递给另一个函数的机制,当某个事件发生的时候,系统会自动的调用这些函数进行处理事件驱动模型中作用,回调函数则被用于处理I/O事件,通常用来读写异常等事件 bi…

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——2Yolo使用之ONNX模型准备

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——2Yolo使用之ONNX模型准备 ​ 大家好,因为板端BPU环境,可以加速目标检测的速度,所以今天在此先给大家带来如何准备一个模型,下一期会给大家带来如何在板端部…