Udostępnianie gniazda unixowego przez wolumin dokera - odmowa dostępu

18

Próbuję udostępnić swoje php5-fpmgniazdo przez wolumin na moim nginxserwerze internetowym. Fpm i nginx działają w różnych kontenerach i chcę, aby działały przez udostępniony wolumin, w którym umieszczam plik gniazda z 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"

Próbowałem już ustawić uprawnienia na 777 i zmienić grupę php5-fpm.socketna www-data.

Plik dokowania kontenera fpm

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"]

Plik Docker kontenera nginx

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"]

Mogę uzyskać dostęp, test.htmlale podczas uzyskiwania dostępu test.phpotrzymuję 502 Bad Gateway.

Czy jest coś jeszcze, o co muszę dbać o uprawnienia podczas udostępniania rzeczy za pośrednictwem woluminów?

zupa
źródło
Jak zaczynasz te kontenery?
cpuguy83
Sprawdź uprawnienia do katalogu zawierającego .
Aryeh Leib Taurog

Odpowiedzi:

5

Różne kontenery nie mogą ze sobą rozmawiać przez gniazda domenowe UNIX, gdy znajdują się w różnych sieciowych przestrzeniach nazw. Istnieje nieoficjalna łatka na jądro, która na to pozwala, ale jesteś sam, jeśli jej używasz.

Michael Hampton
źródło
12

Jest teraz 2015 i zakładam, że łatka na jądro, o której wspomina Michael, teraz trafiła do stabilnego jądra. Mam działający przykład 2 kontenerów dokujących, jednego z php-fpm, a drugiego z nginx rozmawiającymi ze sobą przez gniazdo unix.

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

Kluczem do tego było jednak otwarcie uprawnień do gniazda.

Np .: listen.mode = 0777w /etc/php-fpm.d/www.conf

Wydawało się, że nie miało znaczenia, na co ustawiono listen.owner i listen.group. Myślę, że gniazdo musiało być całkowicie nieograniczone, ponieważ użytkownik w jednym kontenerze, nawet jeśli ma taką samą nazwę w innym kontenerze, jest nadal uważany za innego użytkownika.

Brad Jones
źródło
5
Z mojego ograniczonego doświadczenia doker nie jest w stanie wyszukiwać nazw użytkowników, a raczej nie uwzględnia to architektury konteneryzacji. wydaje się, że najważniejszy jest identyfikator użytkownika w kontenerze. Jeśli spróbujesz ponownie przetestować z ograniczonymi uprawnieniami, upewnij się, że identyfikator UID jest zgodny w kontenerze i poza nim.
ThorSummoner,
0

DODAJ ./test.php /var/test/test.php w kontenerze fpm

Php musi zostać zinterpretowany, aby zostać wyświetlony, prawda?

etre
źródło