1. 背景
由于神秘原因,国内用户逐渐无法访问 Docker Hub 仓库。这对于开发者来说是个不小的难题。而这个解决方案是通过赛博菩萨 cloudflare(简称 CF)中转请求,解决访问限制并加速访问。刚好之前分享了如何获取免费域名,今天就来分享一下如何用免费域名在CF部署自己的 docker 镜像加速。
2. 准备工作
-
一个 Cloudflare 的账号。
-
一个域名(注册一个免费域名,参考我之前的文章申请免费域名,可托管至 Cloudflare,无限免费续期!)。
-
一个 Github 账号(可选)。
项目地址:
https://github.com/cmliu/CF-Workers-docker.io
有 Github 账号的将CF-Workers-docker.io项目 Fork 到自己的仓库中,下面部署会用到。
3. Workers 部署 Docker 仓库镜像代理
3.1 创建 Workers
登录到 Cloudflare,点击 Workers 和 Pages -> 创建 Worker。
CF 地址:
https://www.cloudflare.com/zh-cn/
修改 Worker 名称,点击右下角的“部署”。
点击编辑代码,进入编辑页面。
打开https://github.com/cmliu/CF-Workers-docker.io
,复制 _worker.js
代码,保存并部署即可
3.2 配置域名
返回 Worker 页面,点击“设置”,然后点击“域和路由”旁边的添加,绑定自定义域。
利用自己托管到 CF 的免费域名,添加一个子域名,前缀就叫 docker,然后点击“添加域”。
禁用 workers.dev
进入托管的域名下,点击左侧 DNS,我们就可以看到我们刚才添加的自定义域
4. Pages 部署 Docker 仓库镜像代理
4.1 创建 Pages
点击 Workers 和 Pages -> 创建-> Pages
有两种方式,可以根据自己的实际情况选择。
方式一
:有 github 账号,可以连接到 Git。
连接到 Git
选择刚才 Fork 的仓库,然后点击“开始设置”。
自定义项目名称,点击"保存并部署"。
点击右下角的“继续处理项目”。
方式二
:没有 github 账号,可以上传资产。
将CF-Workers-docker.io项目如下图所示下载到本地
点击上传资产
自定义项目名称,创建项目,
点击从计算机中选择,选择上传压缩文件,上传我们刚才下载的文件。
上传完后,点击右下角的“部署站点”。
点击右下角的“继续处理项目”。
4.2 配置域名
点击自定义域,设置自定义域。
利用自己托管到 CF 的免费域名,添加一个子域名,前缀就叫 docker,然后点击“继续”。
点击激活域
到这里我们的域名就绑定成功,可以通过我们的子域名正常访问 Dockerhub 了
5. 验证效果
5.1 一键设置镜像加速
修改文件 /etc/docker/daemon.json(如果不存在则创建)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["docker.xiaoming521.us.kg"] # 请替换为您自己的Worker自定义域名
}
EOF
sudo systemctl daemon-reload && sudo systemctl restart docker
5.2 使用
通过下载镜像来验证效果,这里以 nginx 为例。
docker pull nginx
总结
通过 CF Workers 和 Pages,我们就可以实现一个属于自己的 Docker 镜像加速服务,而且完全免费。在这里要感谢@cmliu 大佬的开源项目,让我们可以免费使用,手动给大佬的项目点个星。更多的内容可以参考 Github 项目。今天的分享就到这里,希望对大家有所帮助。
原创 小明同学的笔记