社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

基于Cloudflare搭建私有Docker镜像源

各种折腾 • 1 年前 • 491 次点击  

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

第一个原因是总有人留言说 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 的主页,说明部署成功了

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

添加完成后,用自己的域名再试试看能否加载出 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/

@所有人:写文不易,如果你都看到了这里,请点个在看,分享给更多的朋友;为确保你能收到每一篇文章,请主页右上角设置星标。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/172877