Refuerza la seguridad en Docker en minutos

Evita errores comunes de seguridad en Docker aplicando estas prácticas inmediatas:

  1. Usa imágenes oficiales y minimalistas
    Prefiere imágenes como alpine o versiones verificadas de proveedores oficiales. Evita imágenes desconocidas o sin mantenimiento.

  2. No ejecutes contenedores como root
    Usa el flag --user al correr contenedores o define el usuario en el Dockerfile:

    FROM alpine
    RUN adduser -D appuser
    USER appuser
    
  3. Restringe capacidades del contenedor
    Usa --cap-drop=ALL y agrega solo lo necesario con --cap-add:

    docker run \
      --cap-drop=ALL \
      --cap-add=NET_BIND_SERVICE \
      imagen:tag
    

    –cap-drop=ALL

    Esto quita todas las capacidades que Docker por defecto le da al proceso dentro del contenedor. Es la forma más estricta de aplicar el principio de “menos privilegios posibles”: arrancas sin permiso para hacer casi nada de bajo nivel.

    –cap-add=NET_BIND_SERVICE

    Vuelves a añadir solo la capacidad que necesitas:

    NET_BIND_SERVICE

    Permite abrir sockets en puertos “privilegiados” (es decir, puertos por debajo de 1024, como 80 o 443).
    Sin ella, tu aplicación dentro del contenedor no podría escuchar en esos puertos bajos.

  4. Activa seccomp, AppArmor o SELinux
    Usa perfiles de seguridad predeterminados o personalizados:

     docker run --security-opt seccomp=default.json ...
    

    No montes el socket Docker en contenedores

    Evita exponer /var/run/docker.sock, ya que otorga control total sobre el host.

Revisa regularmente tus imágenes con docker scan o herramientas como Trivy para detectar vulnerabilidades conocidas.

Aplicar estas medidas mejora significativamente la postura de seguridad sin complicar el entorno de desarrollo.