# [docker.eisc.cn](https://docker.eisc.cn) 海外代理(单层 registry proxy)完整部署步骤
作用:这一台直接代理 Docker Hub,上游是 `registry-1.docker.io`,大陆那台后面只做 Nginx 转发,不再跑 registry 容器,避免二级 registry 套娃逃逸。
架构:
`Nginx(80) → 本机 registry:2(127.0.0.1:5000) → registry-1.docker.io`
>
> 环境:Ubuntu,工作目录:`/datadisk/eisc/registry-proxy`
## 1. 准备目录
```
mkdir -p /datadisk/eisc/registry-proxy
cd /datadisk/eisc/registry-proxy
```
## 2. 编写 docker-compose.yml
```
nano docker-compose.yml
```
内容:
```
version: '3.8'
services:
registry:
image: registry:2
container_name: registry-proxy
restart: always
# 只监听回环,不对外暴露5000端口,由Nginx对外提供80服务
ports:
- "127.0.0.1:5000:5000"
environment:
# 上游直接指向Docker官方,不要填另一个registry,防止套娃
REGISTRY_PROXY_REMOTEURL: "https://registry-1.docker.io"
volumes:
# 缓存镜像数据持久化
- ./data:/var/lib/registry
```
保存退出(nano:Ctrl+O 回车保存,Ctrl+X 退出)
## 3. 启动 registry 代理容器
```
sudo docker compose up -d
```
查看状态,确认是 Up:
```
sudo docker compose ps
```
查看日志(排错用)
```
sudo docker compose logs -f registry
```
## 4. Nginx 站点配置(docker.conf)
文件路径:`/datadisk/eisc/wwwconf/301/docker.conf`
```
nano /datadisk/eisc/wwwconf/301/docker.conf
```
完整内容:
```
server {
listen 80;
server_name docker.eisc.cn;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 这个头是防止manifest跳转逃逸的关键
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_buffering on;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
}
}
```
## 5. 校验 Nginx + 重载
```
sudo nginx -t
sudo nginx -s reload
```
## 6. 本机测试 [docker.eisc.cn](https://docker.eisc.cn) 代理是否正常(在 [eisc.cn](https://eisc.cn) 服务器本机执行)
```
curl -i http://127.0.0.1:5000/v2/
curl -i http://docker.eisc.cn/v2/
```
✅ 正常返回 HTTP/1.1 200 OK,带 `Docker-Distribution-Api-Version: registry/2.0`
## 7. 域名与解析说明
- `docker.eisc.cn` A 记录解析到这台海外机的公网 IP
- **不需要 hosts 劫持**,外部机器直接域名访问 80 端口
---
# 大陆侧 [docker.ddoss.cn](https://docker.ddoss.cn)(只做纯 Nginx 转发,不再跑 registry)步骤
>
> 重点:大陆这台取消 registry proxy,仅 Nginx 反向代理,消除二级 registry 嵌套 bug
> 文件:大陆机 `/datadisk/eisc/wwwconf/301/docker.conf`
```
server {
listen 80;
server_name docker.ddoss.cn;
location / {
proxy_pass http://docker.eisc.cn;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
}
```
重载 nginx
```
sudo nginx -t
sudo nginx -s reload
```
>
> 如果大陆之前有 registry-proxy 容器,在大陆机执行关闭:
```
cd /datadisk/eisc/registry-proxy
sudo docker compose down
```
## 8. 客户端 daemon.json 配置(客户端机器)
```
{
"registry-mirrors": ["http://docker.ddoss.cn"],
"insecure-registries": ["docker.ddoss.cn"]
}
```
生效:
```
sudo systemctl daemon-reload
sudo systemctl restart docker
```
校验 mirror:
```
docker info | grep -A4 "Registry Mirrors"
```
之后就可以简写拉取:`docker pull debian:12`,不会再跳转逃逸。
---
# 故障自检命令清单([eisc.cn](https://eisc.cn)代理)
```
# 看容器状态
cd /datadisk/eisc/registry-proxy && docker compose ps
# 看日志
cd /datadisk/eisc/registry-proxy && docker compose logs -f registry
# 本地后端检测
curl -i http://127.0.0.1:5000/v2/
# Nginx入口检测
curl -i http://docker.eisc.cn/v2/
```
# 重要提醒
1. 只有 **[eisc.cn](https://eisc.cn) 这一台有 registry:2 代理**;大陆 [ddoss.cn](https://ddoss.cn) 只有 Nginx 转发,不再套 registry
2. REGISTRY_PROXY_REMOTEURL 只能写 `https://registry-1.docker.io`,不能填另一个 registry
3. 防火墙 / 云安全组:海外机放行 TCP 80 端口入站,5000 不需要放行(仅回环)
如果你需要,我可以单独给你一个一键部署脚本直接在[eisc.cn](https://eisc.cn)执行。Powered by ddoss.cn 12.0
©2015 - 2026 ddoss
渝公网安备50011302222260号 |
渝ICP备2024035333号|小程序:渝ICP备2024035333号-2X |
博客简介 |
工程建设规划 |
【实验平台安全承诺书】
主机监控系统: 安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:216.73.217.110,2026-10-30 18:05:25,Processed in 0.0213 second(s).