在中国大陆连不上docker官方镜像站,利用海外的VPS搭建一个中转站进行连接,而且这是目前在中国大陆使用 Docker 最稳定、最可控的方案之一 👍
下面我按可行方案 → 推荐方案 → 具体搭建步骤 → 国内服务器使用方式 → 注意事项给你讲清楚。文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
测试VPS购买教程:Bandwagon搬瓦工VPS注册和购买和使用详细教程文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
一、整体思路(你要做的“中转站”是什么)
你遇到的问题本质是:文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
大陆服务器 → 直连
registry-1.docker.io失败文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
解决思路有三种:文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
| 方案 | 是否可行 | 稳定性 | 推荐度 |
|---|---|---|---|
| VPN / 全局代理 | ✅ | 一般 | ⭐⭐ |
| 镜像站(阿里/中科大) | ❌ | 经常失效 | ⭐ |
| 自建 Docker Registry 中转(美国 VPS) | ✅ | 非常稳定 | ⭐⭐⭐⭐⭐ |
你要做的是:文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
美国 VPS 负责拉官方镜像 → 大陆服务器只访问你的 VPS文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
二、最推荐方案(强烈建议)
✅ 方案:Docker Registry Proxy(官方支持)
Docker 官方 支持 Registry 作为“代理缓存”
✔ 合法
✔ 稳定
✔ 不需要魔改 Docker
✔ 拉过一次后国内飞快文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
架构示意:文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
↓
你的海外 VPS(Registry Proxy)
↓
docker.io 官方仓库
三、海外VPS 上的搭建步骤(10 分钟搞定)
1️⃣ 安装 Docker(美国 VPS)
curl -fsSL https://get.docker.com | sh systemctl enable docker systemctl start docker
2️⃣ 创建 Registry 配置目录
mkdir -p /opt/docker-registry/{data,conf}
cd /opt/docker-registry
3️⃣ 编写 Registry 代理配置(关键)
vim conf/config.yml
version: 0.1
proxy:
remoteurl: https://registry-1.docker.io
storage:
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
4️⃣ 启动 Registry Proxy 容器
docker run -d \ --name docker-registry \ -p 5000:5000 \ -v /opt/docker-registry/data:/var/lib/registry \ -v /opt/docker-registry/conf/config.yml:/etc/docker/registry/config.yml \ --restart always \ registry:2
检查是否正常:文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
docker logs docker-registry
看到 listening on 就成功了 ✅文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
四、大陆服务器如何使用你的中转站
假设你的海外 VPS IP 是:1.2.3.4文章源自无极研究院-https://unvmax.com/%e4%b8%ad%e5%9b%bd%e5%a4%a7%e9%99%86%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%ae-docker-hub%ef%bc%9f%e8%87%aa%e5%bb%ba-docker-%e9%95%9c%e5%83%8f%e4%b8%ad%e8%bd%ac%e7%ab%99%e6%95%99%e7%a8%8b-ID75529
方案 A:直接拉(最简单)
docker pull 1.2.3.4:5000/library/nginx:latest
Registry 会自动去 docker.io 拉并缓存。
方案 B(强烈推荐):设为 Docker 默认镜像源
1️⃣ 编辑 Docker 配置
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"http://1.2.3.4:5000"
]
}
⚠️ 注意:
HTTP 必须写
http://如果你想用 HTTPS,我可以帮你加 Nginx + 证书
2️⃣ 重启 Docker
systemctl daemon-reload
systemctl restart docker
3️⃣ 测试
docker pull nginx
你会发现:
-
第一次:走海外 VPS
-
第二次:直接命中缓存,秒下
五、进阶优化(建议你做)
✅ 1️⃣ 加 HTTPS(推荐)
优点:
-
Docker 不再提示 insecure registry
-
可以暴露公网长期使用
方式:
-
Nginx 反代 Registry
-
Let’s Encrypt 证书
✅ 2️⃣ 限制访问(防止被扫)
建议至少做一个:
-
防火墙仅允许大陆服务器 IP
-
或 Nginx Basic Auth
-
或 Cloudflare Tunnel
✅ 3️⃣ 多 Registry 代理
你还能顺便代理:
-
ghcr.io -
k8s.gcr.io -
quay.io
一台 VPS 搞定所有镜像源
六、对比其他“镜像站”的优势
| 对比项 | 公共镜像站 | 自建中转 |
|---|---|---|
| 稳定性 | ❌ | ✅ |
| 被封风险 | 高 | 极低 |
| 可控性 | 无 | 100% |
| 缓存命中 | 不一定 | 永久 |
| 速度 | 看脸 | 稳定 |
