本文将介绍如何使用Cloudflare Workers和cloudflare-docker-proxy搭建dockerhub、gcr、quay等镜像加速服务。
最近,部分主流镜像站由于各种情况而关闭,为了能够正常使用,我们建议自己搭建一个加速器。
在此之前,我们已经部署好了一个加速器,可以直接使用。具体使用方法请点击
https://docker.lixd.xyz
或者查看使用说明。
准备工作
1)首先需要注册一个Cloudflare账号。
2)在Cloudflare账号下需要添加一个域名。我们推荐在万网注册一个域名,然后将其转移到Cloudflare。 top、xyz后缀的域名应该都是首年7块。
部署流程
修改配置
首先将https://github.com/ciiiii/cloudflare-docker-proxy仓库fork到自己的账号下。然后修改
src/index.js
中的内容。修改后的内容如下:
const routes = {
"docker.mydomain.com": "https://registry-1.docker.io",
"quay.mydomain.com": "https://quay.io",
"gcr.mydomain.com": "https://gcr.io",
"k8s-gcr.mydomain.com": "https://k8s.gcr.io",
"k8s.mydomain.com": "https://registry.k8s.io",
"ghcr.mydomain.com": "https://ghcr.io",
"cloudsmith.mydomain.com": "https://docker.cloudsmith.io",
};
其中mydomain.com就是你的域名,比如作者使用的是lixd.xyz。
再修改
wrangler.toml
,同样替换域名。
[env.production]
name = "cloudflare-docker-proxy"
routes = [
{ pattern = "docker.mydomain.com", custom_domain = true },
{ pattern = "quay.mydomain.com", custom_domain = true },
{ pattern = "gcr.mydomain.com", custom_domain = true },
{ pattern = "k8s-gcr.mydomain.com", custom_domain = true },
{ pattern = "k8s.mydomain.com", custom_domain = true },
{ pattern = "ghcr.mydomain.com", custom_domain = true },
{ pattern = "cloudsmith.mydomain.com", custom_domain = true },
]
[env.production.vars]
MODE = "production"
TARGET_UPSTREAM = ""
[env.staging]
name = "cloudflare-docker-proxy-staging"
route = { pattern = "docker-staging.mydomain.com", custom_domain = true }
同样的mydomain.com就是你的域名。
最后修改README.md中的
图标对应的Github仓库地址为你fork后的仓库地址,比如
https://deploy.workers.cloudflare.com/?url=https://github.com/lixd/cloudflare-docker-proxy
。
这三个修改都完成后,提交代码。
帮助文档
为了便于使用,可以在访问根目录时返回一个帮助页面。
help.html
新建一个
help.html
文件,内容如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
...
...(此处省略)
...
</head>
<body>
...
...(此处省略)
...
</body>
</html>
增加路由
在
scr/index.js
中增加一条路由,访问根目录时就返回这个帮助页面。
import DOCS from './help.html'
// return docs
if (url.pathname === "/") {
return new Response(DOCS, {
status: 200,
headers: {
"content-type": "text/html"
}
});
}
完整内容见:
https://github.com/lixd/cloudflare-docker-proxy
点击部署
然后在Github界面点击这个
图标进行部署,会自动跳转到Cloudflare,按步骤操作即可。最终会在Github仓库中创建一个Github Action来将该仓库部署到Cloudflare Workers。
就像这样:
等待部署完成
可以到Github查看Action执行进度
执行完成后,切换到Cloudflare Dashboard,不出意外的话就可以看到刚创建的Worker了。
切换到Setting,等待SSL证书签发完成即可
使用说明
部署完成后,访问
https://docker.lixd.xyz
就可以看到使用说明了。
例如:
https://docker.lixd.xyz
为了加速Docker镜像拉取,你可以使用以下命令设置registry mirror:
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://docker.lixd.xyz"]
}
EOF
# 配置完后需要重启Docker服务
sudo systemctl restart docker
使用该代理从不同的镜像仓库拉取镜像,请参考以下命令:
# docker pull nginx:latest
docker pull docker.lixd.xyz/library/nginx:latest # 拉取Docker官方镜像
...
...(此处省略)
...
为了避免Worker用量耗尽,你可以手动pull镜像然后re-tag之后push至本地镜像仓库。
FAQ
Build & Deploy The process ‘/usr/local/bin/yarn’ failed with exit code 1 +1
✘ [ERROR] A request to the Cloudflare API (/accounts/***/workers/scripts/cloudflare-docker-proxy/domains/records) failed.
workers.api.error.origin_conflict_existing_dns_record [code: 100117]
如果提前添加了DNS解析则出现这个错误,部署之后会自动添加解析记录,因此部署前不要手动添加记录。
如果出现该问题,可以将DNS解析记录删除后再试。
如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎关注微信公众号。
搜索公众号【
探索云原生
】即可订阅
参考
cloudflare-docker-proxy
白嫖Cloudflare Workers搭建Docker Hub镜像加速服务|
又发掘一个CF的新用法,利用Worker构建Docker Registry Mirror
Docker镜像库国内加速的几种方法
未经允许不得转载:大白鲨游戏网 » 如何基于Cloudflare Workers和cloudflare-docker-proxy搭建镜像加速服务