通过Docker卷共享Unix套接字-权限被拒绝


18

我尝试php5-fpm通过卷与nginxWeb服务器共享套接字。Fpm和nginx在不同的容器中运行,我想通过共享卷使它们工作,在该共享卷中放置fpm的套接字文件。

2014/04/13 10:53:35 [crit] 33#0: *1 connect() to unix:/container/fpm/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.8.2, server: docker.dev, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/container/fpm/run/php5-fpm.sock:", host: "docker.dev"

我已经尝试将权限设置为777并将组更改php5-fpm.socketwww-data

FPM容器的Dockerfile

FROM ubuntu:13.10

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y php5-cli php5-common
RUN apt-get install -y php5-fpm php5-cgi

ADD ./php-fpm.conf /etc/php5/fpm/php-fpm.conf
ADD ./pool.d/www.conf /etc/php5/fpm/pool.d/www.conf
ADD ./php.ini /etc/php5/fpm/php.ini

CMD ["/usr/sbin/php5-fpm"]

Nginx容器的Dockerfile

FROM ubuntu:13.10

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y nginx

ADD ./test.php /var/test/test.php
ADD ./test.html /var/test/test.html
ADD ./nginx.conf /etc/nginx/nginx.conf
ADD ./site /etc/nginx/sites-enabled/test

EXPOSE 80

CMD ["/usr/sbin/nginx"]

我可以访问,test.html但是访问时出现test.php502 Bad Gateway。

通过卷共享内容时,我还需要考虑权限吗?


您如何启动这些容器?
cpuguy83 2014年

检查包含目录的权限。
Aryeh Leib Taurog

Answers:



12

现在是2015年,我认为Michael提到的内核补丁现在已经进入稳定的内核。我有一个工作示例,其中有2个Docker容器,一个带有php-fpm,另一个带有nginx,它们通过unix套接字相互通信。

参见:https : //github.com/brad-jones/conductor/tree/master/example-project

它起作用的关键是打开套接字上的权限。

例如:listen.mode = 0777/etc/php-fpm.d/www.conf中

似乎将listen.owner和listen.group设置为什么都没有关系。我想这个套接字需要完全不受限制,因为一个容器中的用户,即使在另一个容器中具有相同的名称,仍然被认为是不同的用户。


5
以我有限的经验,码头工人无法为用户进行名称查找,或者这不会影响到容器化体系结构。容器中用户的uid似乎很重要。如果尝试使用受限权限再次测试,请确保容器内外的UID匹配。
ThorSummoner 2015年

0

fpm容器中添加./test.php /var/test/test.php

必须将PHP解释为显示,对不对?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.