8. Docker en producción
Desplegar contenedores en entornos de producción implica nuevas exigencias respecto al desarrollo local: estabilidad, seguridad, escalabilidad, supervisión y control de versiones.
A continuación se detallan las áreas más importantes a considerar al usar Docker en producción:
Actualizaciones de imágenes
Las imágenes deben mantenerse actualizadas para incluir parches de seguridad y mejoras.
Recomendaciones:
- No usar
latesten producción: usa versiones concretas (nginx:1.24.0,node:20.10, etc.) - Automatiza la reconstrucción con CI/CD
- Usa herramientas como Watchtower para actualizar imágenes automáticamente
- Revisa los
Dockerfilede terceros: pueden tener malas prácticas o dependencias inseguras
Seguridad
El aislamiento de Docker no es un sistema de seguridad completo. Debes implementar medidas específicas:
- Usa usuarios no root dentro de los contenedores (
USERen Dockerfile) - Limita permisos:
--read-only,--cap-drop, evita--privileged - Usa imágenes mínimas y oficiales (
alpine,debian:slim, etc.) - Escanea imágenes con Trivy o
docker scan - Revisa puertos expuestos y variables de entorno con información sensible
→ Ver también: 09 Seguridad básica en Docker
Supervisión de contenedores
Es fundamental monitorizar tanto los recursos como los logs:
Logs
- Usa
docker logso mejor aún, redirige logs a un sistema externo (ELK, Loki, Fluentd) - Diseña tus servicios para escribir en stdout/stderr en lugar de archivos
Métricas
- Usa herramientas como:
Healthchecks
- Añade
HEALTHCHECKen losDockerfileo endocker-compose.yml
HEALTHCHECK CMD curl --fail http://localhost:3000/health || exit 1
Registros privados y autenticación
Usar un registro privado te permite controlar quién puede subir y bajar imágenes:
Opciones comunes:
- Docker Hub privado
- GitHub Packages
- GitLab Container Registry
- Harbor (self-hosted)
Autenticación:
docker login registry.miempresa.com
Puedes autenticarte automáticamente en CI/CD mediante tokens o archivos config.json.
Buenas prácticas generales en producción
- Mantén imágenes pequeñas y optimizadas
- Elimina capas innecesarias en
Dockerfile - Usa variables y secretos seguros (evita meter contraseñas en imágenes)
- Reinicios automáticos:
restart: unless-stoppedoalways - Configura límites de CPU/RAM si es necesario