Come aggiungere utenti a un container Docker senza prompt interattivi?

Pubblicato 8 settembre 2024

Problema: Aggiungere Utenti ai Container Docker in Modo Non Interattivo

L'aggiunta di utenti ai container Docker spesso richiede prompt interattivi. Questo può essere scomodo per processi automatizzati o distribuzioni tramite script. Crea una sfida quando si cerca di migliorare la gestione dei container e il provisioning degli utenti senza input manuale.

La Soluzione: Creazione Non Interattiva degli Utenti

Usare useradd per l'Aggiunta Automatizzata degli Utenti

Il comando useradd è un'opzione non interattiva alternativa ad adduser per creare utenti nei container Docker. Questo comando permette di aggiungere utenti senza input manuale durante il processo di build.

La sintassi base di useradd è:

useradd [opzioni] nomeutente

Le opzioni comuni includono:

  • -m: Crea la directory home dell'utente
  • -s: Specifica la shell di login dell'utente
  • -u: Imposta uno specifico ID utente
  • -g: Assegna l'utente a un gruppo primario

Suggerimento: Creazione Sicura degli Utenti

Quando si creano utenti con useradd, considera l'uso dell'opzione -p per impostare una password criptata. Questo migliora la sicurezza evitando l'uso di password predefinite o vuote. Per esempio:

useradd -m -s /bin/bash -p $(openssl passwd -1 "password_sicura") nomeutente

Implementare la Soluzione nel Dockerfile

Per aggiungere utenti in modo non interattivo nel tuo Dockerfile, puoi usare il comando useradd con opzioni. Ecco un esempio di come aggiungere utenti nel tuo Dockerfile:

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

Questo crea due utenti, 'uwsgi' e 'celery', ciascuno con la propria directory home e bash come shell predefinita.

Per creare un gruppo condiviso per questi utenti, puoi usare il comando groupadd:

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

Questi comandi creano un gruppo 'worker' e aggiungono entrambi gli utenti 'uwsgi' e 'celery' ad esso.