Команды adduser
и addgroup
.
Вот шаблон для Докера, можно использовать в busybox средах (альпийские), а также находящиеся в Debian среды (Ubuntu, и т.д.):
ENV USER=docker
ENV UID=12345
ENV GID=23456
RUN addgroup --gid "$GID" "$USER" \
&& adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$USER" \
--no-create-home \
--uid "$UID" \
"$USER"
Примечание следующее:
--disabled-password
предотвращает подсказку для пароля --gecos ""
, обходит подсказку для "Полного имени" и т.д. в находящихся в Debian системах --home "$(pwd)"
наборы дом пользователя к WORKDIR. Вы не можете хотеть это. --no-create-home
предотвращает хлам, скопированный в каталог от /etc/skel
, описание использования для этих приложений пропавшие без вести длинных флагов существующее в коде для [1 112] adduser и addgroup.
следующие подробные флаги должны работать оба в альпийском, а также debian-производных:
BusyBox v1.28.4 (2018-05-30 10:45:57 UTC) multi-call binary.
Usage: adduser [OPTIONS] USER [GROUP]
Create new user, or add USER to GROUP
--home DIR Home directory
--gecos GECOS GECOS field
--shell SHELL Login shell
--ingroup GRP Group (by name)
--system Create a system user
--disabled-password Don't assign a password
--no-create-home Don't create home directory
--uid UID User id
Одна вещь отметить состоит в том, что, если --ingroup
не установлен затем, GID присвоен для соответствия UID. Если GID, соответствующий обеспеченному UID уже, будет существовать, то adduser перестанет работать.
BusyBox v1.28.4 (2018-05-30 10:45:57 UTC) multi-call binary.
Usage: addgroup [-g GID] [-S] [USER] GROUP
Add a group or add a user to a group
--gid GID Group id
--system Create a system group
я обнаружил все это при попытке записать мою собственную альтернативу проект fixuid для рабочих контейнеров как хосты UID/GID.
Мой entrypoint сценарий помощника может быть найден на GitHub.
намерение состоит в том, чтобы предварительно ожидать тот сценарий как первый аргумент [1 111], который должен заставить Докера выводить UID, и GID от соответствующего связывают, монтируются.
переменная среды "ШАБЛОН" может потребоваться, чтобы определять, где полномочия должны быть выведены из.
(Во время записи у меня нет документации для моего сценария. Это находится все еще в списке ожидающих выполнения задач!!)