Почему контейнер Docker предоставляет пользователю доступ к компьютеру? - PullRequest
0 голосов
/ 24 сентября 2018

Вкратце:

Мне удалось установить пользователя nginx - www-data:www-data из контейнера Docker как владельца папки на хост-компьютере.Почему это работает?

Длинная версия:

Я создавал установку для локальной разработки Laravel, читая этот учебник - Разработка Laravel с помощью Docker и закончиласьследующая структура файла:

Состав Docker:

version: '2'
services:
    web:
        build:
            context: ./
            dockerfile: deploy/web.docker
        volumes:
            - ./:/var/www
        ports:
            - "8080:80"
        links:
            - app
    app:
        build:
            context: ./
            dockerfile: deploy/app.docker
        volumes:
            - ./:/var/www
        links:
            - database
            - cache
        environment:
            - "DB_PORT=3306"
            - "DB_HOST=database"
            - "REDIS_PORT=6379"
            - "REDIS_HOST=cache"
    database:
        image: mysql:5.6
        environment:
            - "MYSQL_ROOT_PASSWORD=secret"
            - "MYSQL_DATABASE=dockerApp"
        ports:
            - "33061:3306"
    cache:
        image: redis:3.0
        ports:
            - "63791:6379"

deploy / app.docker:

FROM php:7-fpm

WORKDIR /var/www

RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
    && docker-php-ext-install pdo_mysql

deploy / web.docker:

FROM nginx:1.10

ADD ./deploy/vhost.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www

Когда я сделал docker-compose up, я столкнулся с ошибкой, что он не мог получить доступ к storage/logs/laravel.log, так как доступ был запрещен.Затем я изменил владельца на www-data:www-data на хост-машине, и проблема исчезла, но я на самом деле не понял, почему это работает?У меня нет хоста nginx на моем хост-компьютере, так что это означает, что пользователь nginx из контейнера доступен для моего хост-компьютера?

...