Alpine utilise la commande adduser
et addgroup
pour créer des utilisateurs et des groupes (plutôt que useradd
et 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
Les drapeaux pour adduser
sont:
Utilisation: adduser [OPTIONS] USER [GROUP]
Créer un nouvel utilisateur ou ajouter USER à GROUP
-h Répertoire de base DIR
-g Champ GECOS GECOS
-s SHELL Shell de connexion
-G Groupe GRP
-S Créer un utilisateur système
-D Ne pas attribuer de mot de passe
-H Ne crée pas de répertoire personnel
-u UID ID utilisateur
-k SKEL Répertoire Skeleton (/ etc / skel)
Ajouter de nouveaux documents officiels d'utilisateur
USER 405
qui est l'utilisateur invité dans Alpine Linux.USER guest
?adduser
etaddgroup
sont différentes deadduser
etaddgroup
telles que fournies par Debian et Ubuntu qui à leur tour sont des frontaux versuseradd
etgroupadd
. Notamment, les commandes Debian et Ubuntu ne prennent en charge que les options de forme longue. Voir: manpages.debian.org/stretch/adduser/adduser.8.en.htmlLes commandes sont
adduser
etaddgroup
.Voici un modèle pour Docker que vous pouvez utiliser dans les environnements busybox (alpin) ainsi que dans les environnements basés sur Debian (Ubuntu, etc.):
Notez ce qui suit:
--disabled-password
empêche l'invite de mot de passe--gecos ""
contourne l'invite "Nom complet" etc. sur les systèmes basés sur Debian--home "$(pwd)"
définit le domicile de l'utilisateur sur WORKDIR. Vous ne voudrez peut-être pas cela.--no-create-home
empêche la copie de cruft dans le répertoire de/etc/skel
La description d'utilisation de ces applications ne contient pas les indicateurs longs présents dans le code pour adduser et addgroup .
Les indicateurs de forme longue suivants devraient fonctionner à la fois dans les dérivés alpins et Debian:
adduser
Une chose à noter est que s'il
--ingroup
n'est pas défini, le GID est attribué pour correspondre à l'UID. Si le GID correspondant à l'UID fourni existe déjà, adduser échouera.ajouter un groupe
J'ai découvert tout cela en essayant d'écrire ma propre alternative au projet fixuid pour exécuter des conteneurs en tant qu'UID / GID de l'hôte.
Mon script d'assistance de point d'entrée peut être trouvé sur GitHub.
L'intention est d'ajouter ce script comme premier argument
ENTRYPOINT
auquel Docker devrait déduire l'UID et le GID d'un montage de liaison pertinent.Une variable d'environnement "TEMPLATE" peut être requise pour déterminer d'où les autorisations doivent être déduites.
(Au moment d'écrire ces lignes, je n'ai pas de documentation pour mon script. Il est toujours sur la liste des choses à faire !!)
la source