继国内dockerhub被墙,大厂镜像被禁以后,国内使用docker越来越不舒服,为了解决该困扰教大家自建镜像仓库。
用 香港服务器 + Docker Registry + 本地 HTTP 代理 ,实现国内机器无缝拉取 Docker Hub 镜像。全程只需要 3 步。
整体思路
- 香港服务器:起一个 Docker Registry 代理(registry proxy),它会自动从 Docker Hub 拉取并缓存
- 香港服务器:开一个 HTTP 代理(Caddy/Nginx) 给国内机器访问
- 国内机器:配置
daemon.json指向香港代理
一、香港服务器操作(Docker + Registry Proxy)
1. 安装 Docker(已装可跳过)
curl -fsSL https://get.docker.com | bash
systemctl enable --now docker
2. 启动 Docker Registry 代理(关键)
创建目录:
mkdir -p /data/registry
启动代理 registry(直接复制运行):
docker run -d \
--restart=always \
--name registry-proxy \
-p 5000:5000 \
-v /data/registry:/var/lib/registry \
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \
-e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry \
registry:2
这就是一个 Docker Hub 中转缓存仓库。
- 国内拉取 → 香港代理 → 第一次去 Docker Hub 拉,后面直接走缓存。
二、香港服务器:开放端口
# 防火墙开放 5000
ufw allow 5000/tcp
安全建议:生产环境建议加账号密码或限制来源 IP。
三、国内机器配置(关键)
1. 编辑 /etc/docker/daemon.json
vim /etc/docker/daemon.json
写入(把 你的香港IP 替换掉):
{
"registry-mirrors": [
"http://你的香港IP:5000"
]
}
2. 重启 Docker
systemctl daemon-reload
systemctl restart docker
四、测试是否成功
国内机器直接执行:
docker pull nginx
会自动从 香港服务器中转拉取,速度非常快。
五、进阶(可选,更安全)
如果你希望:
- 加 账号密码认证
- 加 HTTPS
- 加 域名
- 限制国内 IP 白名单