基于cloudflare-worker的docker代理实践
本文介绍了一种基于 Cloudflare Worker 的 Docker 代理方案,用于高效访问官方 Docker 仓库和第三方 Docker 仓库(如 quay.io、k8s.gcr.io 等)。方案基于 cloudflare-docker-proxy,并记录了个人实践过程。
worker配置
新建worker
首先,新建一个 Worker,并将以下代码复制到 Worker 中:
https://github.com/ciiiii/cloudflare-docker-proxy/blob/master/src/index.js
修改路由信息
1 |
|
添加自定义域
在 Cloudflare 的【设置】->【触发器】->【自定义域】中分别添加以下条目:
- registry.个人域名
- docker.registry.个人域名
- quay.registry.个人域名
- gcr.registry.个人域名
- …
设置环境变量
【设置】->【变量】->【环境变量】添加以下配置
MODE = “production”
TARGET_UPSTREAM = “”
这样,你可以通过【registry.个人域名】统一访问各个子域名的映射关系,各个子域名则负责具体的映射。
使用测试
查看映射关系
直接浏览器访问 【registry.个人域名】,可以看到包含域名映射关系的json数据
DockerHub
直接测试
1 |
|
配置镜像
编辑 /etc/docker/daemon.json 文件,添加 Docker 官方仓库的镜像配置:
1 |
|
然后重启 Docker 服务使配置生效:
1 |
|
测试:
1 |
|
接下来测试其他仓库
k8s
以 k8s.gcr.io/kube-apiserver:v1.26.0 为例,注意 k8s.gcr.io 已经迁移到 registry.k8s.io,因此建议使用【k8s.registry.个人域名】
1 |
|
quay
尽管目前 quay.io 访问尚可,但为了防止未来访问问题,建议配置代理。
以 quay.io/prometheus-operator/prometheus-operator:v0.50.0 为例:
1 |
|
通过上述配置和测试,便可以高效地访问各种 Docker 仓库,提高镜像拉取速度和稳定性。