Alpine usa o comando adduser
e addgroup
para criar usuários e grupos (ao invés de useradd
e usergroup
).
FROM alpine:latest
# Create a group and user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
# Tell docker that all future commands should run as the appuser user
USER appuser
As bandeiras para adduser
são:
Uso: adduser [OPÇÕES] USUÁRIO [GRUPO]
Crie um novo usuário ou adicione USUÁRIO ao GRUPO
-h Diretório inicial DIR
-g campo GECOS GECOS
Shell de login -s SHELL
-G Grupo GRP
-S Criar um usuário do sistema
-D Não atribua uma senha
-H Não cria diretório inicial
-u ID de usuário UID
-k Diretório SKEL Skeleton (/ etc / skel)
Adicionar novos documentos oficiais do usuário
USER 405
que é o usuário convidado no Alpine Linux.USER guest
?adduser
eaddgroup
são diferentesadduser
eaddgroup
fornecidos pelo Debian e Ubuntu que, por sua vez, são front-ends parauseradd
egroupadd
. Notavelmente, os comandos Debian e Ubuntu suportam apenas opções de formato longo. Veja: manpages.debian.org/stretch/adduser/adduser.8.en.htmlOs comandos são
adduser
eaddgroup
.Este é um modelo para Docker que você pode usar em ambientes busybox (alpino), bem como ambientes baseados em Debian (Ubuntu, etc.):
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
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
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 !!)
fonte