最近一些公共docker hub国内加速镜像相继停止服务了(好像是因为政策原因)。为了满足我们自身需要,我们可以利用海外服务器(追求速度的话还可以用一层国内服务器中转),自建docker hub加速镜像。

首先在服务器安装好docker环境,然后运行下面镜像:


docker run  -d --name docker-proxy --restart=always -p 3011:5000  -e  REGISTRY_PROXY_REMOTEURL="https://registry-1.docker.io"  -e REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=inmemory  registry:2

这样主体服务就起来了。为了使用标准端口以及域名,我们最好前置一个nginx 。搭建nginx以及配置https域名是基本功,这里不再介绍。提供一个nginx配置文件以供参考下:

server {
  listen 80 ;
  listen  443 ssl;
  ssl_certificate       /.acme.sh/docker-proxy.com/fullchain.cer;
  ssl_certificate_key   /.acme.sh/docker-proxy.com/docker-proxy.com.key;
  ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers           HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers on;

  server_name           docker-proxy.com;

   location / {

        # 仅允许 GET 请求
        limit_except GET {
            deny all;
        }
          client_max_body_size  1000m;
          proxy_http_version 1.1;
          proxy_pass http://localhost:5000;  # 请根据实际情况修改你的端口
          proxy_set_header Host $host;
          proxy_set_header X-Forwarded-For $remote_addr;
          proxy_cache_bypass $http_upgrade;
          proxy_read_timeout 600s;  # 如果需要较长的超时时间,请自行调整
   }

        location /.well-known/acme-challenge/ {
           root /var/www/html/;
        }

}

此外,为了定时释放内存等资源,可以添加定时任务,定时重启这个服务。

00 5 * * * /usr/bin/docker restart docker-proxy