Os comandos são adduser
e addgroup
.
Este é um modelo para Docker que você pode usar em ambientes busybox (alpino), bem como ambientes baseados em Debian (Ubuntu, etc.):
ENV USER=docker
ENV UID=12345
ENV GID=23456
RUN adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$USER" \
--no-create-home \
--uid "$UID" \
"$USER"
Observe o seguinte:
--disabled-password
impede a solicitação de uma senha
--gecos ""
contorna o prompt de "Nome completo" etc. em sistemas baseados em Debian
--home "$(pwd)"
define a casa do usuário como WORKDIR. Você pode não querer isso.
--no-create-home
evita que dados cruft sejam copiados para o diretório de /etc/skel
A descrição de uso para esses aplicativos não contém os sinalizadores longos presentes no código para adduser e addgroup .
Os seguintes sinalizadores de formato longo devem funcionar tanto em derivados alpinos quanto em debian:
adicionar usuário
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
Uma coisa a notar é que se --ingroup
não estiver definido, o GID é atribuído para corresponder ao UID. Se o GID correspondente ao UID fornecido já existir, o adduser falhará.
adicionar grupo
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
Eu descobri tudo isso enquanto tentava escrever minha própria alternativa ao projeto fixuid para executar contêineres como hosts UID / GID.
Meu script auxiliar do entrypoint pode ser encontrado no GitHub.
A intenção é anexar esse script como o primeiro argumento para o ENTRYPOINT
qual deve fazer o Docker inferir UID e GID de uma montagem de ligação relevante.
Uma variável de ambiente "TEMPLATE" pode ser necessária para determinar de onde as permissões devem ser inferidas.
(No momento em que estou escrevendo, não tenho a documentação do meu script. Ele ainda está na lista de tarefas !!)
USER 405
que é o usuário convidado no Alpine Linux.