Hoe Voeg Je Gebruikers Toe Aan Een Docker Container Zonder Interactieve Prompts?

Gepubliceerd 15 juli 2024

Probleem: Gebruikers Toevoegen aan Docker Containers Niet-Interactief

Het toevoegen van gebruikers aan Docker containers vereist vaak interactieve prompts. Dit kan onhandig zijn voor geautomatiseerde processen of gescripte implementaties. Het creëert een uitdaging bij het verbeteren van containerbeheer en gebruikersprovisioning zonder handmatige invoer.

De Oplossing: Niet-Interactieve Gebruikersaanmaak

Gebruik van useradd voor Geautomatiseerde Gebruikerstoevoeging

Het useradd commando is een niet-interactieve optie voor adduser om gebruikers aan te maken in Docker containers. Dit commando stelt je in staat om gebruikers toe te voegen zonder handmatige invoer tijdens het buildproces.

De basis syntaxis voor useradd is:

useradd [options] username

Veelgebruikte opties zijn:

  • -m: Maak de home directory van de gebruiker aan
  • -s: Specificeer de login shell van de gebruiker
  • -u: Stel een specifiek gebruikers-ID in
  • -g: Wijs de gebruiker toe aan een primaire groep

Tip: Veilige Gebruikersaanmaak

Bij het aanmaken van gebruikers met useradd, overweeg het gebruik van de -p optie om een geëncrypteerd wachtwoord in te stellen. Dit verbetert de beveiliging door het gebruik van standaard of lege wachtwoorden te vermijden. Bijvoorbeeld:

useradd -m -s /bin/bash -p $(openssl passwd -1 "secure_password") username

Implementatie van de Oplossing in Dockerfile

Om gebruikers niet-interactief toe te voegen in je Dockerfile, kun je het useradd commando met opties gebruiken. Hier is een voorbeeld van hoe je gebruikers toevoegt in je Dockerfile:

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

Dit maakt twee gebruikers aan, 'uwsgi' en 'celery', elk met hun eigen home directory en bash als hun standaard shell.

Om een gedeelde groep voor deze gebruikers aan te maken, kun je het groupadd commando gebruiken:

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

Deze commando's maken een 'worker' groep aan en voegen zowel de 'uwsgi' als 'celery' gebruikers eraan toe.