因为某些不可抗拒的原因,现大陆地区无法正常拉取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的镜像了
原创文章,禁止转载!