通过NGINX代理Docker的pull请求,实现Docker hub自由拉取镜像
时间:2024-8-1 14:14 作者:Anglei 分类: 虚拟化
通过NGINX代理Docker的pull请求,需要设置NGINX以转发请求到Docker守护进程。以下是一个基本的NGINX配置示例,它将代理到Docker守护进程默认监听的Unix套接字:
前提你得有一台境外的服务器,比如腾讯云申请一台竞价实例,很便宜的那种
确保Docker守护进程配置为允许远程API调用。编辑Docker守护进程的配置文件(通常是/etc/docker/daemon.json),确保有如下设置:
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
并修改:
vi /usr/lib/systemd/system/docker.service
修改如下:
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd
systemctl daemon-reload
systemctl restart docker
配置NGINX。编辑NGINX配置文件(例如/etc/nginx/conf.d/docker.conf),添加以下内容:
server {
listen 7788;
location / {
proxy_pass http://localhost:2375;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $http_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;
}
}
重启NGINX服务以应用更改:
systemctl restart nginx
现在,你可以通过NGINX代理来使用Docker的pull功能。
使用 SSH 隧道 (可选):
如果你无法直接连接到远程 Docker 守护进程,你可以使用 SSH 隧道来转发 Docker 守护进程的端口。例如:
ssh -N -f -L localhost:2375:/var/run/docker.sock user@49.51.253.142
上述其实可以通过nginx过滤配置白名单替代。
在需要docker拉取镜像的机器上,设置 DOCKER_HOST 环境变量:
export DOCKER_HOST=tcp://XXX.XXX.XXX.XXX:7788
然后就可以通过常规命令直接拉取了。
docker pull jumpserver/web:v3.0.2

本文完结,相关标签: nginx docker pull hub
推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(2) |
![]() 鲜花(0) |
![]() 鸡蛋(0) |