Instrucción USER Dockerfile

instruccion-user-dockerfile
instruccion-user-dockerfile

En esta lección aprenderás instrucción USER Dockerfile, una pieza importante para que tus contenedores no ejecuten la aplicación como root salvo que sea estrictamente necesario.

USER cambia el usuario activo para las instrucciones siguientes y para el proceso principal del contenedor, por eso conviene entenderla antes de llevar imágenes a entornos reales.

👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis

🐳 Si quieres aprender más de Docker, pincha en este curso de Docker gratis

Qué hace la instrucción USER Dockerfile

Problema: muchas imágenes ejecutan comandos como root por defecto. Eso puede simplificar el build, pero aumenta el impacto si la aplicación tiene una vulnerabilidad.

Qué aporta Docker: USER permite cambiar a un usuario concreto dentro de la imagen para ejecutar RUN, CMD o ENTRYPOINT con menos privilegios.

SituaciónRecomendación
Durante el buildCrea usuario, grupo y permisos antes de cambiar a USER.
Aplicación finalEjecuta el proceso con un usuario no root cuando sea posible.
Archivos copiadosAsegura ownership/permisos antes de arrancar la app.

Ejemplo práctico

FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --omit=dev
COPY . .
RUN addgroup -S app && adduser -S app -G app \
    && chown -R app:app /app
USER app
CMD ["node", "server.js"]
docker build -t user-demo:1.0 .
docker run --rm user-demo:1.0 id

El ejemplo crea un usuario de aplicación, ajusta permisos sobre /app y cambia a USER app antes del CMD. Así el proceso principal no arranca como root.

Errores comunes

  • Cambiar a USER antes de preparar permisos: después pueden fallar COPY, RUN o escrituras necesarias.
  • Asumir que USER arregla toda la seguridad: reduce privilegios, pero no sustituye buenas prácticas de imagen, red y secretos.
  • Usar nombres de usuario inexistentes: crea el usuario antes o usa UID/GID válidos.
  • Dar permisos 777 para salir del paso: suele esconder problemas y abre demasiado acceso.

Advertencia: ejecutar como no root es una defensa importante, pero prueba que la aplicación puede leer, escribir y escuchar donde corresponde. Si necesita privilegios extra, documenta el motivo.

Lecciones relacionadas del curso Docker

Documentación oficial y recursos

La instrucción USER Dockerfile queda bien aplicada cuando el contenedor arranca con los mínimos privilegios necesarios y los permisos están preparados de forma explícita.

En producción, este cambio debe ir acompañado de pruebas reales de lectura, escritura, puertos y comportamiento de la aplicación.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *