菜单

搭建DockerHub反向代理,加速拉取Docker镜像

Administrator
发布于 2024-07-04 / 458 阅读
0
0

搭建DockerHub反向代理,加速拉取Docker镜像

因为某些不可抗拒的原因,现大陆地区无法正常拉取Docker镜像,

解决方案是,在国外服务器上,搭建nginx反向代理,

国内通过反代拉取Docker镜像

安装配置Nginx

个人使用不推荐手搓Nginx,因为要配置ssl证书及证书续签,后期会很麻烦。

不推荐国产宝塔面板,因为可能植入有后门,不安全。

这里推荐使用github上Linux开源web面板 mdserver-web

web面板安装教程这里不介绍,按照项目地址教程安装,安装好网站环境 Nginx(OpenResty) PHP MySQL
github项目地址:https://github.com/midoks/mdserver-web

配置代理域名

在mdserver-web面板中新建一个网站:

代理域名根据你自己的域名可以自定义,然后提交

对站点进行配置

点击新建网站的 设置 然后

第一步,申请ssl证书

第二步,开启ssl访问,并强制https访问

第三步,配置反向代理

#目标URL地址
https://registry-1.docker.io

第四步,修改反向代理配置

#将以下配置代码复制替换到反向代理配置中
 location / {
                     proxy_pass https://registry-1.docker.io;  
                     proxy_set_header Host registry-1.docker.io;
                     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_buffering off;
                     proxy_set_header Authorization $http_authorization;
                     proxy_pass_header  Authorization;
                     proxy_intercept_errors on;
                     recursive_error_pages on;
                     error_page 301 302 307 = @handle_redirect;
​
             }
                          location @handle_redirect {
                     resolver 1.1.1.1;
                     set $saved_redirect_location '$upstream_http_location';
                     proxy_pass $saved_redirect_location;
             }

点击 详细 进行修改,修改后如图:

提交配置,这里DockerHub反向代理已经搭建好了

测试Docker反向代理

#这里以 MySQL 的docker镜像拉取为例:
#原先拉取命令为:
docker pull mysql/mysql-server

#添加你搭建的代理后,拉取命令为:
docker pull docker.xxx.com/mysql/mysql-server

如上所示,在镜像名称前加入你的反向代理域名前缀:
docker.xxx.com/镜像名称

不出差错的话,你的国内Linux服务器就能正常通过你的域名反代拉取DockeHub的镜像了

原创文章,禁止转载!


评论