Los comandos son adduser
y addgroup
.
Aquí hay una plantilla para Docker que puede usar en entornos de busybox (alpine) así como en entornos basados en 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"
Tenga en cuenta lo siguiente:
--disabled-password
evita la solicitud de una contraseña
--gecos ""
elude la solicitud de "Nombre completo", etc. en sistemas basados en Debian
--home "$(pwd)"
establece la casa del usuario en WORKDIR. Puede que no quieras esto.
--no-create-home
evita que cruft se copie en el directorio desde /etc/skel
En la descripción de uso de estas aplicaciones faltan los indicadores largos presentes en el código para adduser y addgroup .
Los siguientes indicadores de formato largo deberían funcionar tanto en alpine como en los derivados de Debian:
agregar usuario
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
Una cosa a tener en cuenta es que si --ingroup
no está configurado, el GID se asigna para que coincida con el UID. Si el GID correspondiente al UID proporcionado ya existe, el adduser fallará.
añadir 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
Descubrí todo esto mientras intentaba escribir mi propia alternativa al proyecto fixuid para ejecutar contenedores como hosts UID / GID.
Mi script auxiliar de punto de entrada se puede encontrar en GitHub.
La intención es anteponer ese script como el primer argumento al ENTRYPOINT
que debería hacer que Docker infiera UID y GID de un montaje de enlace relevante.
Es posible que se requiera una variable de entorno "PLANTILLA" para determinar de dónde se deben inferir los permisos.
(En el momento de escribir este artículo, no tengo documentación para mi script. ¡Todavía está en la lista de tareas pendientes!)
USER 405
que es el usuario invitado dentro de Alpine Linux.