无服务器自建 Docker Registry 镜像代理,支持 Cloudflare Workers、Deno、Netlify 和 Docker 部署。
Warning
代理行为可能违反 Cloudflare、Deno 等平台用户协议,存在被封号的风险。 请务必限制访问范围,或通过环境变量设置合理的伪装策略。不建议用于搭建公开或公共镜像站点。
🚀 快速部署
Cloudflare Workers
Fork 本仓库并在 Cloudflare Workers 中导入,或点击下方按钮一键部署:
Deno
Fork 本仓库并在 Deno Deploy 中导入:
Entrypoint选择./src/deno.tsFramework preset、Install command、Build command等配置项请保持为空
Netlify
Fork 本仓库并在 Netlify 中导入,或点击下方按钮一键部署:
Docker
Tip
基于 denoland/deno:alpine 构建,需搭配 Web 服务器使用。
docker-compose
services:
docker-proxy:
image: fordes123/docker-proxy:latest
container_name: docker-proxy
environment:
HOME_MODEL: static
HOME_VALUE: search
ports:
- 1993:1993
restart: unless-stoppeddocker cli
docker run -d \
--name docker-proxy \
--restart unless-stopped \
--env HOME_MODEL='static' \
--env HOME_VALUE='search' \
-p 1993:1993 \
fordes123/docker-proxy:latest根据自定义域名前缀自动匹配对应镜像源:
| 域名前缀 | 对应镜像源 |
|---|---|
docker.* |
registry-1.docker.io |
gcr.* |
gcr.io |
quay.* |
quay.io |
k8s-gcr.* |
k8s.gcr.io |
k8s.* |
registry.k8s.io |
ghcr.* |
ghcr.io |
cloudsmith.* |
docker.cloudsmith.io |
nvcr.* |
nvcr.io |
通过 URL 参数 ns 指定镜像源(优先级高于域名匹配):
your-domain.com?ns=gcr→gcr.ioyour-domain.com?ns=quay→quay.io
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
HOME_MODEL |
❌ | static |
浏览器访问时的策略 - redirect:重定向- proxy:代理- static:静态内容 |
HOME_VALUE |
❌ | search |
策略对应值 - redirect:重定向目标 URL (https://hub.docker.com)- proxy:代理域名 (hub.docker.com)- static:静态文本内容 (预设 nginx、search) |
🙏 致谢
本项目基于以下项目修改而来,感谢各位作者的贡献
from https://github.com/fordes123/docker-proxy
-----
这个项目是一个基于 Cloudflare Workers 的 Docker 镜像代理工具。它能够中转对 Docker 官方镜像仓库的请求,解决一些访问限制和加速访问的问题。
这个项目是一个基于 Cloudflare Workers 的 Docker 镜像代理工具。它能够中转对 Docker 官方镜像仓库的请求,解决一些访问限制和加速访问的问题。
Caution
docker.fxxk.dedyn.io 已被GFW污染,需自行部署使用。
Warning
根据 Cloudflare 协议 中,2.2.1 第 (j) use the Services to provide a virtual private network or other similar proxy services.
使用本服务可能存在被 Cloudflare 封号的潜在风险,请自行斟酌使用风险。
如果你选择了“根据主机名选择对应的上游地址”方式部署,你可能会:
被 Netcraft 扫描到,收到警告邮件
被 Netcraft 同步到 Google Safe Browsing 标记为钓鱼网站
被 Netcraft 投诉到 Cloudflare 标记为钓鱼网站, 无法正常 pull 镜像
收到律师函
- Workers 部署:复制 _worker.js 代码,
保存并部署即可 - Pages 部署:
Fork后连接GitHub一键部署即可
⚙️ 如何使用? 视频教程
例如您的Workers项目域名为:docker.fxxk.dedyn.io;
docker pull docker.fxxk.dedyn.io/stilleshan/frpc:latestdocker pull docker.fxxk.dedyn.io/library/nginx:stable-alpine3.19-perl修改文件 /etc/docker/daemon.json(如果不存在则创建)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.fxxk.dedyn.io"] # 请替换为您自己的Worker自定义域名
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart dockerContainerd 较简单,它支持任意 registry 的 mirror,只需要修改配置文件 /etc/containerd/config.toml,添加如下的配置:
[plugins."io.containerd.grpc.v1.cri".registry]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://xxxx.xx.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
endpoint = ["https://xxxx.xx.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
endpoint = ["https://xxxx.xx.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
endpoint = ["https://xxxx.xx.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"]
endpoint = ["https://xxxx.xx.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]
endpoint = ["https://xxxx.xx.com"]Podman 同样支持任意 registry 的 mirror,修改配置文件 /etc/containers/registries.conf,添加配置:
unqualified-search-registries = ['docker.io', 'k8s.gcr.io', 'gcr.io', 'ghcr.io', 'quay.io']
[[registry]]
prefix = "docker.io"
insecure = true
location = "registry-1.docker.io"
[[registry.mirror]]
location = "xxxx.xx.com"
[[registry]]
prefix = "registry.k8s.io"
insecure = true
location = "registry.k8s.io"
[[registry.mirror]]
location = "xxxx.xx.com"
[[registry]]
prefix = "k8s.gcr.io"
insecure = true
location = "k8s.gcr.io"
[[registry.mirror]]
location = "xxxx.xx.com"
[[registry]]
prefix = "gcr.io"
insecure = true
location = "gcr.io"
[[registry.mirror]]
location = "xxxx.xx.com"
[[registry]]
prefix = "ghcr.io"
insecure = true
location = "ghcr.io"
[[registry.mirror]]
location = "xxxx.xx.com"
[[registry]]
prefix = "quay.io"
insecure = true
location = "quay.io"
[[registry.mirror]]
location = "xxxx.xx.com"
对于以上配置,k8s 在使用的时候,就可以直接 pull 外部无法 pull 的镜像了。
# 手动可以直接pull配置了mirror的仓库
crictl pull registry.k8s.io/kube-proxy:v1.28.4
docker pull nginx:1.21| 变量名 | 示例 | 必填 | 备注 |
|---|---|---|---|
| URL302 | https://t.me/CMLiussss |
❌ | 主页302跳转 |
| URL | https://www.baidu.com/ |
❌ | 主页伪装(设为nginx则伪装为nginx默认页面) |
| UA | netcraft |
❌ | 支持多元素, 元素之间使用空格或换行作间隔 |
注意:
- 以下内容仅做镜像服务的整理与搜集,未做任何安全性检测和验证。
- 使用前请自行斟酌,并根据实际需求进行必要的安全审查。
- 本列表中的任何服务都不做任何形式的安全承诺或保证。
| DockerHub 镜像仓库 | 镜像加地址 |
|---|---|
| bestcfipas 镜像服务 | https://docker.registry.cyou |
https://docker-cf.registry.cyou |
|
https://registry.lfree.org |
|
| zero_free 镜像服务 | https://docker.jsdelivr.fyi |
https://docker.aeko.cn |
|
| mingyu 镜像服务 | https://hubp.de |
| Docker 镜像加速站 | https://docker.1panel.live |
| Hub Proxy | https://hub.rat.dev |
| DaoCloud 镜像站 | https://docker.m.daocloud.io |
🙏 鸣谢
🛠 开源代码引用
from https://github.com/cmliu/CF-Workers-docker.io
------
https://github.com/ciiiii/cloudflare-docker-proxy
------
Docker 镜像代理,通过 GitHub Actions 将 docker.io、gcr.io、registry.k8s.io、k8s.gcr.io、quay.io、ghcr.io 等国外镜像转换为国内镜像加速下载.
hub-mirror
使用国内镜像仓库来提供(但不限于) docker.io、gcr.io、registry.k8s.io、k8s.gcr.io、quay.io、ghcr.io 等国外镜像加速下载服务
示例:#2816
👆 扫码或搜索关注公众号:gopher云原生
Fork 该项目,后续所有操作都在你 Fork 的仓库中进行。
-
进入
Settings→Secrets and variables→Actions -
选择
New repository secret,并添加以下Secrets:DOCKER_USERNAME:镜像仓库登录名DOCKER_TOKEN:镜像仓库密码DOCKER_REPOSITORY:镜像仓库地址
其中 DOCKER_REPOSITORY 示例:
- 腾讯云:
ccr.ccs.tencentyun.com/[namespace] - 阿里云:
registry.cn-hangzhou.aliyuncs.com/[namespace]
例如我的是:registry.cn-hangzhou.aliyuncs.com/hubmirrorbytogettoyou
🔹 示例截图
- 进入
Settings→General→Features - 启用
Issues
🔹 示例截图
- 进入
Settings→Actions→General - 在
Workflow permissions选项中,选择:- ✅
Read and write permissions
- ✅
🔹 示例截图
-
进入
Issues→Labels -
点击
New label -
依次添加以下 Labels:
hub-mirrorsuccessfailure
🔹 示例截图
- 进入
Actions - 选择
hub-mirror - 在右上角
···菜单中选择Enable Workflow
🔹 示例截图
- 在
Fork的仓库Issues页面,点击New issue - 选择
hub-mirror模板,填写所需信息并提交
🔹from https://github.com/togettoyou/hub-mirror







No comments:
Post a Comment