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.