HACK A BOSS
FormaciónEvaluacionesPerfil
Volver
  • En directo

Docker Avanzado: Producción y CI/CD

8h de clase en directo·HACK A BOSS·Español

Skills que aprenderás

  • Docker

Convocatorias

Necesitas un plan activo

Para acceder a los cursos en directo necesitas un plan activo. Estamos trabajando para que los planes estén disponibles pronto — ¡mantente atento!

No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.

Descripción

Objetivos

Temario

Requisitos técnicos

Conocimientos previos

Detalles de la convocatoria

Recursos

No hay recursos disponibles todavía para esta convocatoria

Curso de nivel avanzado orientado a profesionales que ya construyen y distribuyen imágenes Docker y necesitan operar entornos multi-contenedor en producción con criterios de seguridad, eficiencia y automatización. El punto de partida es el dominio de Dockerfiles profesionales, registros y el ciclo de distribución; el objetivo es dar el salto a producción con todas las garantías: optimizar imágenes con multi-stage builds para reducir su tamaño y superficie de ataque, desplegar aplicaciones multi-contenedor con Docker Compose con dependencias y health checks correctamente configurados, aplicar prácticas de seguridad en contenedores, gestionar recursos y ciclo de vida con límites y políticas de reinicio, integrar Docker en pipelines de CI/CD automatizados, y diseñar procedimientos de despliegue y rollback reproducibles. Al finalizar, el participante será capaz de operar aplicaciones contenerizadas en producción de forma segura, automatizada y recuperable.

Al finalizar el curso, el participante será capaz de:

  • Optimizar una imagen Docker aplicando multi-stage builds para separar la fase de compilación de la imagen de producción, reduciendo el tamaño final y verificando que las herramientas de build no están presentes en la imagen desplegable
  • Diseñar y desplegar una aplicación multi-contenedor con Docker Compose definiendo dependencias entre servicios con health checks, redes internas y volúmenes persistentes, verificando el orden de arranque y la comunicación entre contenedores
  • Aplicar prácticas de seguridad en contenedores configurando un usuario no-root, gestionando secretos sin incluirlos en el Dockerfile ni en el historial de capas
  • Gestionar recursos y ciclo de vida de contenedores en producción configurando límites de CPU y memoria, health checks y políticas de reinicio, verificando el comportamiento ante fallos simulados
  • Integrar el ciclo build-test-push de Docker en un pipeline de CI/CD automatizado, publicando la imagen solo si los tests pasan, con tag de imagen basado en el commit
  • Diseñar una estrategia de despliegue y rollback con Docker Compose aplicando actualizaciones con mínimo downtime y documentando el procedimiento de rollback a una versión anterior
  1. Multi-stage builds y optimización de imágenes Modelo de capas de Docker y por qué RUN rm -rf no reduce el tamaño de las capas anteriores; multi-stage builds: sintaxis de FROM ... AS <stage> y COPY --from=<stage>; separación entre stage de build (toolchain completo) y stage de producción (binario o artefacto); selección de imagen base para el stage de producción: scratch, distroless, alpine, slim; comparativa de tamaño antes/después con docker image ls; multi-stage builds para aplicaciones compiladas (Go, Java, Rust) y para aplicaciones con proceso de build (Node.js, Python con wheel)

  2. Docker Compose para aplicaciones multi-contenedor docker-compose.yml v3: servicios, redes y volúmenes; healthcheck en el servicio de base de datos: pg_isready, redis-cli ping, endpoint HTTP; depends_on con condition: service_healthy para garantizar que el servicio dependiente espera a que el servicio requerido esté operativo; redes explícitas para aislamiento entre servicios: qué servicios se pueden ver entre sí; volúmenes nombrados para persistencia: diferencia con bind mounts; ports vs expose: cuándo exponer al host y cuándo mantener interno; fichero .env para variables de configuración por entorno

  3. Seguridad en contenedores Ejecución como root: por qué aumenta el riesgo en producción; RUN useradd -r appuser y USER appuser en Dockerfile con permisos sobre el directorio de trabajo; secretos en capas de imagen: docker history --no-trunc para visualizar el riesgo; gestión de secretos en runtime: -e, fichero .env en Compose, Docker secrets (Swarm); ARG vs ENV para secretos en build time; escaneo básico de vulnerabilidades con docker scout o trivy

  4. Gestión de recursos y ciclo de vida --memory y --memory-swap para limitar RAM y swap; --cpus para limitar uso de CPU; OOM killer y su comportamiento cuando el contenedor supera el límite de memoria; HEALTHCHECK en Dockerfile: CMD, --interval, --timeout, --retries; estados del contenedor: starting, healthy, unhealthy; políticas de reinicio: no, always, on-failure, unless-stopped — cuándo usar cada una; comportamiento en Compose vs docker run

  5. CI/CD con Docker y GitHub Actions Estructura de un workflow de GitHub Actions para Docker: jobs build, test, push; needs para secuenciar jobs y condicionar el push al éxito de los tests; docker run imagen pytest para ejecutar tests dentro del contenedor construido; autenticación en Docker Hub con secrets de GitHub (DOCKER_USERNAME, DOCKER_PASSWORD); tag de imagen con SHA corto del commit (github.sha); docker/build-push-action para builds optimizados con caché de capas en CI; uso de --platform para builds multi-arquitectura (amd64/arm64)

  6. Estrategia de despliegue y rollback Actualización de imagen en Compose con mínimo downtime: docker compose pull + docker compose up -d <servicio>; convención de tags para rollback posible: tags semánticos versionados y política de retención en el registro; procedimiento de rollback: cambiar tag en docker-compose.yml, pull y recrear contenedor; verificación post-despliegue: test de humo con curl o endpoint de health; criterio de rollback: quién decide, cuándo y cómo; diferencia entre rollback de aplicación (cambio de tag) y rollback de datos (requiere backup de BD)

  • Docker Desktop instalado con soporte de BuildKit habilitado (activo por defecto desde Docker Desktop 4.x)
  • Cuenta en Docker Hub con acceso a push en un repositorio personal o de organización
  • Cuenta en GitHub con acceso para crear repositorios y configurar GitHub Actions
  • Docker Compose v2 (incluido en Docker Desktop)
  • Editor de código (VS Code recomendado) con extensión Docker

→ DCK02 — Docker: Imágenes, Registros y Distribución (Intermedio, 8h)

  • Escribir Dockerfiles profesionales con gestión de caché de capas y señales del sistema
  • Aplicar criterios de selección de imagen base: slim, alpine, variante completa
  • Etiquetar imágenes con convención semver y publicar en Docker Hub
  • Diagnosticar errores de portabilidad con docker inspect, docker logs y health checks
  • Operar el flujo completo build → tag → push → pull → run