快速搭建专属Docker镜像加速服务


最近,国内大部分的主流 Docker 镜像站点都纷纷关闭,作为一个软件开发人员,搭建一个专属的镜像加速服务自用还是很有必要的。本文依然是依托 Cloudflare Workers 能力搭建一个 ServerlessDocker 镜像加速服务,你不需要准备任何服务器,整个过程跟随博文一步步下来,几分钟就可以完成搭建。

准备工作

首先你需要注册一个 Cloudflare 账号,其次还需要一个自己的域名并托管到 Cloudflare,如果这一步不知道怎么做的同学,可以参考我的另一篇博文 如何注册一个域名并托管到Cloudflare。当然,也可以省事直接在 Cloudflare 上购买域名,xyztop 的域名大多每年 $1 不到。

部署

首先打开 Githubciiiii/cloudflare-docker-proxy 项目。

点击 READMEDeploy with Workers 按钮,进入部署流程。

国内对github的访问向来是时断时续的,如果安装失败可以等一等,或者使用科学上网工具,这里推荐可以 注册 一个,目前有免费流量可以薅羊毛。

首先点击 Authorize Workers 按钮,如果你的 Github 未登录的话,需要你先完成登录,登录完成后自动完成 Workers 的授权,进入下一步。

这个时候你应该已经创建好 Cloudflare 账号了,所以点 I have an account 按钮。

在这里,你需要输入 Account IDAPI Token 两个参数,点击左边的 Workers Dashboard 链接,在弹出页面的右边可以看到你的 账户ID,复制到这里 Account ID 里。

然后再点击右边的 My Profile 链接,获取你的 API 令牌。如果你已经有 Edit Workers 权限的令牌了就可以直接使用,如果没有就需要重新创建一个。

点击 创建令牌 按钮,点击 编辑 Cloudflare Workers 这行后面的 使用模板 按钮,开始创建一个新的令牌。

权限无需修改,账户资源选择所有账户, 区域资源选择所有区域,点击 继续以显示摘要 按钮,再点击 创建令牌 按钮。

这样新的令牌已经创建好了,你需要将这个令牌复制到部署页面的 API Token 输入框中。

注意,令牌只会显示一次,如果你没有复制就关闭了页面就需要重新创建或者更新令牌了。

接下来,点击 Connect account 按钮进入下一步。

首选点击 Fork the repository 按钮,自动将 Github 项目 Fork 到了你的仓库中,下一步需要开启 Actions

点击 Repository - Actions 链接,弹出 GithubActions 面板。

先不急着打开,我们先切换到 Settings 面板,在左侧选择 Secrets and variables - Actions

点击 New repository secret 按钮,在 Name 栏输入 CUSTOM_DOMAIN,在 Secret 栏输入你注册的域名。

这里输入 example.com 就表示你的 Docker 镜像服务域名为 docker.example.com

输入完毕后,点击 Add Secret 按钮保存。然后再回到前面的 Actions 面板,点击那个长长的绿色按钮启用 Actions

做完这一步再回到前面的部署页面,会看到 Workflows enabled 按钮已经点亮了,点击它进入最后一步。

点击 Deploy 按钮,这时你在 GithubActions 面板就可以看到已经开始自动执行部署了。

过了一会,部署成功,你就可以在 CloudflareWorkers 和 Pages 面板看到你发布的 Workers 服务了。

上面一个是自动发布的稳定版本,可以不用管它,也可以删除。

绑定域名

按照上一步输入的 CUSTOM_DOMAINexample.com 的假设,代理服务的域名规则如下:

{
	"routes": {
		"docker.example.com": "https://registry-1.docker.io",
		"quay.example.com": "https://quay.io",
		"gcr.example.com": "https://gcr.io",
		"k8s-gcr.example.com": "https://k8s.gcr.io",
		"k8s.example.com": "https://registry.k8s.io",
		"ghcr.example.com": "https://ghcr.io",
		"cloudsmith.example.com": "https://docker.cloudsmith.io",
		"ecr.example.com": "https://public.ecr.aws"
	}
}

接下去你需要将这些子域名按需绑定到 Workers 上,如果你只需要 Docker 镜像加速,就只绑定一个 docker.example.com 即可。

首先在 Workers 和 Pages 面板点击 cloudflare-docker-proxy 进入管理页面,再点击设置页签。

点击 域和路由 右边的 添加 按钮,在浮出的右侧栏点击 自定义域,在 的输入框输入你要绑定的子域名。

点击 添加域 按钮后,绑定生效,稍微过两分钟,等子域名证书自动部署后即可生效。

配置 Docker

上面服务的部署已经完成,现在要 Docker 客户端上配置使用我们搭建的服务。

/etc/docker 目录下创建 daemon.json 文件,如果已有,则加上下面的那一行配置。

{
    "registry-mirrors": ["https://docker.example.com"]
}

然后还需要重启 Docker 服务。

systemctl restart docker

至此,整个搭建就结束了,以后就可以用你专属的代理服务来拉取 Docker 镜像啦。

注意:docker login 目前无法支持,所以本服务只能用来拉取公共镜像。


文章作者: Mingy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mingy !
评论
  目录