Chia sẻ ổ cắm unix thông qua khối lượng docker - quyền bị từ chối


18

Tôi cố gắng chia sẻ php5-fpmổ cắm của mình thông qua một ổ đĩa với nginxmáy chủ web của tôi . Fpm và nginx đang chạy trong các thùng chứa khác nhau và tôi muốn làm cho chúng hoạt động thông qua một ổ đĩa chung nơi tôi đặt tệp ổ cắm từ 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"

Tôi đã thử đặt quyền thành 777 và thay đổi nhóm php5-fpm.socketthành www-data.

Dockerfile của container 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"]

Dockerfile của nginx container

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

Tôi có thể truy cập test.htmlnhưng khi truy cập test.phptôi nhận được 502 Bad Gateway.

Có điều gì khác tôi phải quan tâm về quyền khi chia sẻ nội dung qua các tập không?


Làm thế nào bạn bắt đầu những container này?
cpuguy83

Kiểm tra các quyền trên thư mục chứa .
Aryeh Leib Taurog

Câu trả lời:


5

Các container khác nhau không thể nói chuyện với nhau thông qua các socket miền UNIX khi chúng ở các không gian tên mạng khác nhau. Có một bản vá kernel không chính thức cho phép điều này, nhưng bạn chỉ có một mình nếu bạn sử dụng nó.


12

Bây giờ là năm 2015 và tôi cho rằng bản vá kernel mà Michael đề cập hiện đã đưa nó vào kernel ổn định. Tôi có một ví dụ hoạt động của 2 container docker một với php-fpm và cái còn lại với nginx nói chuyện với nhau thông qua một ổ cắm unix.

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

Chìa khóa để nó hoạt động mặc dù là mở các quyền trên ổ cắm.

Ví dụ: listen.mode = 0777trong /etc/php-fpm.d/www.conf

Nó dường như không quan trọng những gì lắng nghe.owner & lắng nghe. Nhóm được đặt thành. Ổ cắm cần phải hoàn toàn không bị hạn chế, tôi đoán bởi vì một người dùng trong một container, ngay cả khi nó có cùng tên trong một container khác vẫn được coi là một người dùng khác.


5
Theo kinh nghiệm hạn chế của tôi, docker không thể thực hiện tra cứu tên cho người dùng, hay đúng hơn là điều đó không ảnh hưởng đến kiến ​​trúc container. Dường như uid của người dùng trong container là tất cả những gì quan trọng. Nếu bạn cố kiểm tra lại với các quyền hạn chế, hãy đảm bảo khớp của UID bên trong và bên ngoài thùng chứa.
ThorSummoner

0

THÊM ./test.php /var/test/test.php trong vùng chứa fpm

Php phải được giải thích để được hiển thị, phải không?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.