¿Cómo añadir usuarios a un Docker Container sin prompts interactivos?

Publicado 8 de septiembre de 2024

Problema: Agregar Usuarios a Contenedores Docker de Forma No Interactiva

Añadir usuarios a contenedores Docker a menudo requiere solicitudes interactivas. Esto puede ser inconveniente para procesos automatizados o despliegues mediante scripts. Presenta un desafío cuando se intenta mejorar la gestión de contenedores y el aprovisionamiento de usuarios sin intervención manual.

La Solución: Creación de Usuarios No Interactiva

Usando useradd para la Adición Automatizada de Usuarios

El comando useradd es una opción no interactiva de adduser para crear usuarios en contenedores Docker. Este comando te permite añadir usuarios sin entrada manual durante el proceso de construcción.

La sintaxis básica de useradd es:

useradd [opciones] nombre_usuario

Opciones comunes incluyen:

  • -m: Crear el directorio home del usuario
  • -s: Especificar el shell de inicio de sesión del usuario
  • -u: Establecer un ID de usuario específico
  • -g: Asignar el usuario a un grupo primario

Consejo: Creación Segura de Usuarios

Al crear usuarios con useradd, considera usar la opción -p para establecer una contraseña encriptada. Esto mejora la seguridad evitando el uso de contraseñas predeterminadas o vacías. Por ejemplo:

useradd -m -s /bin/bash -p $(openssl passwd -1 "contraseña_segura") nombre_usuario

Implementando la Solución en Dockerfile

Para añadir usuarios de forma no interactiva en tu Dockerfile, puedes usar el comando useradd con opciones. Aquí hay un ejemplo de cómo añadir usuarios en tu Dockerfile:

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

Esto crea dos usuarios, 'uwsgi' y 'celery', cada uno con su propio directorio home y bash como su shell predeterminado.

Para crear un grupo compartido para estos usuarios, puedes usar el comando groupadd:

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

Estos comandos crean un grupo 'worker' y añaden tanto al usuario 'uwsgi' como a 'celery' a este grupo.