Comment ajouter des utilisateurs à un conteneur Docker sans prompts interactifs ?

Publié 8 septembre 2024

Problème : Ajouter des utilisateurs aux conteneurs Docker de manière non interactive

L'ajout d'utilisateurs aux conteneurs Docker nécessite souvent des invites interactives. Cela peut être gênant pour les processus automatisés ou les déploiements scriptés. Cela crée un défi lors de l'amélioration de la gestion des conteneurs et de l'approvisionnement des utilisateurs sans intervention manuelle.

La solution : Création d'utilisateurs non interactive

Utilisation de useradd pour l'ajout automatisé d'utilisateurs

La commande useradd est une option non interactive à adduser pour créer des utilisateurs dans les conteneurs Docker. Cette commande vous permet d'ajouter des utilisateurs sans saisie manuelle pendant le processus de construction.

La syntaxe de base de useradd est :

useradd [options] nom_utilisateur

Les options courantes incluent :

  • -m : Créer le répertoire personnel de l'utilisateur
  • -s : Spécifier le shell de connexion de l'utilisateur
  • -u : Définir un ID utilisateur spécifique
  • -g : Assigner l'utilisateur à un groupe principal

Conseil: Création sécurisée d'utilisateurs

Lors de la création d'utilisateurs avec useradd, envisagez d'utiliser l'option -p pour définir un mot de passe crypté. Cela améliore la sécurité en évitant l'utilisation de mots de passe par défaut ou vides. Par exemple :

useradd -m -s /bin/bash -p $(openssl passwd -1 "mot_de_passe_sécurisé") nom_utilisateur

Mise en œuvre de la solution dans le Dockerfile

Pour ajouter des utilisateurs de manière non interactive dans votre Dockerfile, vous pouvez utiliser la commande useradd avec des options. Voici un exemple d'ajout d'utilisateurs dans votre Dockerfile :

RUN useradd -ms /bin/bash uwsgi
RUN useradd -ms /bin/bash celery

Cela crée deux utilisateurs, 'uwsgi' et 'celery', chacun avec son propre répertoire personnel et bash comme shell par défaut.

Pour créer un groupe partagé pour ces utilisateurs, vous pouvez utiliser la commande groupadd :

RUN groupadd worker
RUN usermod -aG worker uwsgi
RUN usermod -aG worker celery

Ces commandes créent un groupe 'worker' et ajoutent les utilisateurs 'uwsgi' et 'celery' à ce groupe.