«

通过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


重启Docker守护进程以应用更改:

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

 版权所有:Anglei
 文章标题:通过NGINX代理Docker的pull请求,实现Docker hub自由拉取镜像
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(2)

鲜花(0)

鸡蛋(0)
分享到: