Разрешение для томов в docker-compose - PullRequest
0 голосов
/ 03 января 2019

Я хочу создать docker-контейнеры с томами и пользовательской группой.Но столкнулся с ошибкой с разрешения внутри контейнера.Все файлы имеют, например, 'custom-group' и работают нормально, но папка Document имеет корневую группу по умолчанию.Я думаю, что это связано с объемами.Как в папке «Документ» установить «пользовательскую группу».Мой код ниже

volumes:
  - /base/documents:/app/documents:rw

1 Ответ

0 голосов
/ 04 января 2019

uid / gid внутри контейнера, как правило, совпадает с uid / gid вне контейнера на хосте (пространства имен пользователей отключены по умолчанию и не решат эту проблему, фактически они могут ухудшить ситуацию).).Обратите внимание, что это uid / gid, а не имя пользователя и имя группы, поскольку контейнеры могут иметь свои собственные файлы / etc / passwd и / etc / group.

Вам необходимо запустить свой контейнер с помощью uid / gidсовпадающие с файлами на вашем хосте.Это делается с помощью секции user файла композиции или опции -u в командной строке запуска Docker, например:

docker run -u "$(id -u):$(id -g)" -v /base/documents:/app/documents:rw ...

или в файле композиции:

user: "1000:1000"

Если ваше приложение должно работать от имени пользователя root, то вариантов для этого гораздо меньше.Я предпочитаю динамически обрабатывать uid / gid из точки входа, которая запускается как root, фиксирует uid / gid внутри контейнера, чтобы соответствовать хосту (глядя на владельца тома), а затем отбрасывается из root в пользователя контейнера длязапустив приложение.Подробнее о том, как это сделать, вы можете увидеть в моем репозитории base image , включая пример nginx и скрипт fix-perms.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...