允许nginx读取docker.sock

时间:2016-10-04 09:30:54

标签: nginx docker

为了监控我的docker容器,我决定通过以下规则通过nginx公开docker远程API:

server {
    listen 1234;
    server_name xxx.xxx.xxx.xxx;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://unix:/var/run/docker.sock;
    }
}

但是在nginx.error文件中,我收到以下错误:

connect() to unix:/var/run/docker.sock failed (13: Permission denied

原因是docker.sock属于docker组的所有权,而nginx正在www-data组中运行。

解决此问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:0)

  

原因是docker.sock属于docker group的所有权   而nginx正在www-data组中运行。

     

解决此问题的最佳方法是什么?

对于此问题,您可以将user正在运行的nginx添加到docker群组。

usermod -a -G www-data,docker user

答案 1 :(得分:0)

您可以通过在守护程序配置文件中的ExecStart中添加以下文本来打开守护程序中的http套接字:

-H <ip address>:2375

您可以在命令的输出中找到配置文件的位置:

systemctl status docker 

答案 2 :(得分:0)

您可以设置Docker套接字的权限:

sudo chmod a+r /var/run/docker.sock