为了监控我的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
组中运行。
解决此问题的最佳方法是什么?
答案 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