利用 Cloudflare Workers 自建 Docker 镜像

发布于 2024-06-22  49 次阅读


Post Stats

此文章有 2055 个字符, 大约要花 9 分钟阅读

背景

目前国内 docker 加速源逐渐用不了了。就想着自己搭一个镜像中转的节点。

这里使用 hammal 的方案,通过 Cloudflare Workers 搭建。

hammal官方教程

前提

  • 网络环境能正常访问cloudflare
  • 有自己的域名。

安装方法

这里截取官方教程的部分。


Fork & Clone

首先 fork 仓库 GitHub - ImSingee/hammal: docker-registry proxy run in cloudflare workers ,并克隆到本地

可以的话顺便给个 Star😂

使用 pnpm install 安装依赖。没有的话使用 npm 安装 pnpm。

npm install -g pnpm

其实这里不确定npm和pnpm对项目包安装有什么影响,能用pnpm尽量用pnpm。

创建 Workers 项目

进入 Cloudflare Dashboard -> Workers 和 Pages -> 概述 创建一个新的 Workers 项目,给他一个命名(例如 hammal)

在代码中复制 wrangler.toml.sample 文件, 改名 wrangler.toml 并修改其 name 和 account_id

name: 创建的 Worders 项目名
account_id: 可以通过 npx wrangler whoami 获得,也可以在 Workers 概述页面右侧的账户ID处复制。

创建 cache 缓存 kv

在克隆好的项目目录下执行 npx wrangler kv:namespace create hammal_cache 来创建缓存 kv,记录下来输出的 id,填写到 wrangler.toml 文件中

部署

在克隆好的项目目录下执行 pnpm run deploy 来部署项目

域名

有域名则需要把域名的 名称服务器(name server) 改到 cloudflare 上,可以在 网站 -> 添加的域名 -> DNS -> 记录 页面下获取。

设置后一般等待24小时即可在 cloudflare 上控制域名解析。

可以解析后前往 Workers 和 Pages -> 用来获取docker的Workder -> 设置 -> 触发器 -> 自定义域 -> 添加自定义域。直接输入完整访问域名即可。例如mirror.docker.xxx.com

本地Docker设置

使用自定义的域名设置 deamon.json。通常在 /etc/docker/daemon.json 。

sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://mirror.docker.xxx.com"
  ]
}
EOF