도커 볼륨을 통한 유닉스 소켓 공유-권한 거부


18

php5-fpm볼륨을 통해 소켓을 nginx웹 서버 와 공유하려고합니다 . 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.socket로 변경하려고 했습니다 www-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.php하면 502 Bad Gateway가 표시됩니다.

볼륨을 통해 물건을 공유 할 때 권한과 관련하여 고려해야 할 다른 것이 있습니까?


이 용기들을 어떻게 시작합니까?
cpuguy83

포함 디렉토리에 대한 권한 확인하십시오 .
Aryeh Leib Taurog

답변:


5

다른 컨테이너는 다른 네트워크 네임 스페이스에있을 때 UNIX 도메인 소켓을 통해 서로 통신 할 수 없습니다. 이것을 허용 하는 비공식 커널 패치 가 있지만, 그것을 사용한다면 당신은 스스로 할 수 있습니다.


12

지금은 2015 년이며 Michael이 언급 한 커널 패치가 이제 안정적인 커널로 들어가는 것으로 가정합니다. 하나는 php-fpm과 nginx는 유닉스 소켓을 통해 서로 대화하는 2 개의 도커 컨테이너의 작동 예제입니다.

참조 : 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

0

fpm 컨테이너 에 ./test.php /var/test/test.php를 추가하십시오.

Php가 표시되도록 해석되어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.