Разрешения на удаление файлов в хранилище постоянного хоста: может ли Docker запускаться от имени пользователя, а не root? - PullRequest
0 голосов
/ 27 марта 2019

Я установил докер-контейнер, который монтирует том, который является постоянным на хост-компьютере:

docker volume create --name work type=none --opt device=/home/username --opt o=bind
docker container run -it --rm --mount source=work,target=/work

Я запускаю контейнер и делаю вещи, скажем так:

echo "Hello world" > testfile.txt

Когда я пытаюсь удалить все файлы (например, testfile.txt), которые контейнер записывает в / work (который сопоставляется с / home / username на хосте) с хост-терминала, я получаю ошибку разрешений, потому что она написана и принадлежит ей.root.

Есть ли способ настроить Docker для запуска в качестве текущего пользователя, к которому я подключен, поэтому проблема с разрешениями не возникает?Кроме того, есть ли причина, по которой он запускается от имени пользователя root (будет ли нарушена другая функциональность, если я смогу каким-либо образом работать от имени пользователя)?Я знаю, что всегда могу поплавать, но мне интересно, есть ли лучший подход.Спасибо.

1 Ответ

0 голосов
/ 27 марта 2019

Вы можете добавить пользователя без полномочий root в свой контейнер и установить его по умолчанию:

RUN useradd -m myuser
USER myuser # every command below is executed by myuser
WORKDIR /home/myuser

Используйте USER root, чтобы снова переключиться на root пользователя.( docs )

Чтобы получить разрешение на удаление файлов на хосте, у пользователя хоста и пользователя контейнера должен быть одинаковый идентификатор пользователя.

Для проверки пользователяидентификаторы, которые вы можете использовать id -u <username>.Если идентификаторы не совпадают, используйте параметр -u <userid> для создания вашего пользователя:

RUN useradd -m -u <userid> <username>

См. useradd для получения дополнительной информации.

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