Docker-контейнер, создающий каталоги, принадлежащие root, мне нужно, чтобы они принадлежали 1000: 1000 - PullRequest
0 голосов
/ 13 мая 2018

Итак, я пытаюсь заняться созданием образов докера, и мне удалось его запустить. Это был qBittorrent, все шло хорошо, пока он не начал загружать файлы. Все каталоги qBits принадлежат 1000:1000, но как только начинается загрузка файла, мой компьютер с докером-хостом сообщает, что папка с файлами принадлежит root:root.

Как я могу убедиться, что все, что создает контейнер, принадлежит 1000:1000?

Мне нужно, чтобы это принадлежало ему, потому что другим контейнерам Docker, таким как Radarr, необходим доступ к файлам для их импорта, и сейчас я получаю ошибки прав доступа.
Я попытался выполнить chown -r и setgid на хост-компьютере, но файлы продолжают создаваться и принадлежать пользователю root ...
Я открыт для всех предложений :) Спасибо!

Мой Dockerfile:

https://github.com/TheCreatorzOne/qbittorrent/blob/master/Dockerfile

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

удалось починить. Исправление включало добавление нового пользователя с помощью Dockerfile. Пользователь автоматически получает 1000: 1000 в качестве UID и GID, но при желании его можно поменять местами для других ...

Dockerfile запускается от имени пользователя командой USER

Все каталоги, которые использует USER, должны быть chown -R и быть chmod 2775 -R (или любыми другими, но 2 или 4 впереди, чтобы они наследовали разрешения от папки хоста)

Также убедитесь, что вы открыли и создали все необходимые тома, иначе qbittorrent не запустится. Здесь было необходимо создать / Downloads / temp, иначе он выдавал ошибку, потому что не мог создать свой собственный, потому что он не запускался от имени root.

Dockerfile доступен здесь: https://github.com/TheCreatorzOne/qbittorrent/blob/master/Dockerfile

Файл Ansible используется в проекте автоматизации PlexGuide, поэтому его можно посмотреть там.

0 голосов
/ 13 мая 2018

Это зависит от вашей команды docker run.
I предлагает здесь для подключения папок хоста к томам, объявленным в вашем образе.

Но если проблема не исчезнет, ​​это может привести козначает, что сама команда выполняет некоторые операции с правами root (через sudo команды)

Для тестирования вы можете поэкспериментировать с userns (Docker 17.06 или более).
См. " Изолировать контейнеры с помощьюпространство имен пользователя":

  • создайте /etc/subuid и /etc/subgid с идентификатором известного локального пользователя хоста.
  • запустите демон Docker с помощьюэтот сопоставленный пользователь:

     dockerd --userns-remap="testuser:testuser"
    

и проверьте, что файлы, ранее созданные как root в ваших размещенных томах, действительно теперь принадлежат этому сопоставленному пользователю.

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