中国大陆无法访问 Docker Hub?自建 Docker 镜像中转站教程

原创评论18阅读模式

在中国大陆连不上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%
缓存命中 不一定 永久
速度 看脸 稳定
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证