前期准备

1.一个对大陆连接性较好的境外服务器(这里推荐使用阿里云的香港)
2.需要域名解析到此台机器上

开始搭建

安装Docker环境

apt update -y && 
apt upgrade -y && apt install curl -y && 
curl -fsSL https://get.docker.com -o get-docker.sh &&
bash get-docker.sh

确认安装成功后进行下一步

安装Registry

services:
  registry:
    image: registry:2.8.3
    ports:
      - "5000:5000"
    environment:
      REGISTRY_PROXY_REMOTEURL: https://registry-1.docker.io
      REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR: inmemory
    volumes:
      - ./data:/var/lib/registry

根据上方docker-compose创建Registry。

反向代理Registry

我这里采用的nginx,有其他的反向代理工具同理

server {
    listen 80;
    server_name yourdomain.com;#你的域名

    location / {
        limit_except GET {
            deny all;
        }

        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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

测试

在不能访问DockerHub的机器上输入以下命令进行测试

docker pull yourdomain.com/nginx

如果正常拉取则代表搭建成功。

修改镜像源

mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://yourdomain.com"]

}

EOF

systemctl restart docker

完成上方操作即可成功修改加速镜像。