Wie fügt man Benutzer zu einem Docker Container ohne interaktive Eingabeaufforderungen hinzu?

Veröffentlicht 8. September 2024

Problem: Nicht-interaktives Hinzufügen von Benutzern zu Docker-Containern

Das Hinzufügen von Benutzern zu Docker-Containern erfordert oft interaktive Eingabeaufforderungen. Dies kann für automatisierte Prozesse oder Skript-Deployments unpraktisch sein. Es stellt eine Herausforderung dar, wenn man das Container-Management und die Benutzerbereitstellung ohne manuelle Eingaben verbessern möchte.

Die Lösung: Nicht-interaktive Benutzererstellung

Verwendung von useradd für automatisierte Benutzererstellung

Der Befehl useradd ist eine nicht-interaktive Alternative zu adduser für die Erstellung von Benutzern in Docker-Containern. Dieser Befehl ermöglicht es, Benutzer ohne manuelle Eingabe während des Build-Prozesses hinzuzufügen.

Die grundlegende Syntax für useradd lautet:

useradd [Optionen] Benutzername

Häufige Optionen sind:

  • -m: Erstellt das Home-Verzeichnis des Benutzers
  • -s: Legt die Login-Shell des Benutzers fest
  • -u: Setzt eine spezifische Benutzer-ID
  • -g: Weist den Benutzer einer primären Gruppe zu

Tipp: Sichere Benutzererstellung

Bei der Erstellung von Benutzern mit useradd sollten Sie die Option -p verwenden, um ein verschlüsseltes Passwort festzulegen. Dies verbessert die Sicherheit, indem die Verwendung von Standard- oder leeren Passwörtern vermieden wird. Zum Beispiel:

useradd -m -s /bin/bash -p $(openssl passwd -1 "sicheres_passwort") benutzername

Implementierung der Lösung im Dockerfile

Um Benutzer nicht-interaktiv in Ihrem Dockerfile hinzuzufügen, können Sie den Befehl useradd mit Optionen verwenden. Hier ein Beispiel, wie Sie Benutzer in Ihrem Dockerfile hinzufügen können:

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

Dies erstellt zwei Benutzer, 'uwsgi' und 'celery', jeweils mit eigenem Home-Verzeichnis und Bash als Standard-Shell.

Um eine gemeinsame Gruppe für diese Benutzer zu erstellen, können Sie den Befehl groupadd verwenden:

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

Diese Befehle erstellen eine 'worker'-Gruppe und fügen sowohl den 'uwsgi'- als auch den 'celery'-Benutzer dieser Gruppe hinzu.