Cloudflare Worker 部署的 OCI 容器镜像代理 · 解决国内访问 Docker Hub、GHCR、GCR、k8s.io 慢或失败的问题。
docker.mwh122.com
已启用 4/4 个注册表
下表列出本 Worker 支持的所有注册表及当前启用状态。
| 前缀 | 子域名 | 上游 | 说明 | 状态 |
|---|---|---|---|---|
docker |
docker.mwh122.com ↗ | registry-1.docker.io |
Docker Hub 官方仓库(含 library/ 自动补全) | 已启用 |
ghcr |
ghcr.mwh122.com ↗ | ghcr.io |
GitHub 容器镜像仓库 | 已启用 |
gcr |
gcr.mwh122.com ↗ | gcr.io |
Google 容器镜像仓库 | 已启用 |
k8s |
k8s.mwh122.com ↗ | registry.k8s.io |
Kubernetes 官方镜像仓库 | 已启用 |
配置 Docker 走代理拉取 Docker Hub 镜像。
{
"registry-mirrors": ["https://docker.mwh122.com"]
}
写入 ~/.docker/daemon.json(Linux: /etc/docker/daemon.json)后重启 Docker,再拉取:
docker pull nginx:latest
同样使用 docker pull 拉取。这些注册表的镜像路径自带完整域名,把原域名替换为代理子域名即可:
# 原命令
docker pull ghcr.io/containerd/stargz-snapshotter:latest
# 改为代理
docker pull ghcr.mwh122.com/containerd/stargz-snapshotter:latest
未启用的注册表请在 Cloudflare Workers 环境变量中设置 REGISTRIES=ghcr,gcr,k8s(逗号分隔)后重新部署。
在节点上让 containerd 通过代理拉取镜像,编辑 /etc/containerd/config.toml:
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://docker.mwh122.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"]
endpoint = ["https://ghcr.mwh122.com"]
修改后重启 containerd:systemctl restart containerd。
curl -i https://docker.mwh122.com/v2/ — 应返回 401(OCI 协议要求先认证,属正常)。docker pull nginx:latest,观察是否经过 docker.mwh122.com。docker pull ghcr.mwh122.com/<image>。