Despliegue Docker Swarm con réplicas de Nginx

Clase 30 de 34Curso de Docker Avanzado

Contenido del curso

Optimización Avanzada en Docker

Orquestación

Resumen

Orquesta contenedores de forma fiable con Docker Swarm y Docker Compose: crea una imagen de Nginx, define servicios con réplicas, políticas de reinicio y redes overlay, y despliega con docker stack para mantener todo disponible aunque una instancia falle.

¿Cómo preparar el proyecto con Docker Compose y Swarm?

Empezamos organizando el proyecto en una carpeta stacks con una subcarpeta app y un dockerfile para Nginx. Se construye la imagen primero y luego se usa en Docker Compose; aquí se trabaja con imágenes, no con build. En el archivo compose se agregan servicios con la sección deploy: réplicas, paralelismo y retraso de diez segundos para reponer instancias caídas, además de políticas de reinicio y dos networks: frontend y backend, ambas de tipo overlay.

  • Se crea la imagen local del frontend con Nginx.
  • En compose se usa image: frontend:latest, sin build.
  • En deploy se define replicas, paralelismo y delay de 10 segundos.
  • Se ajusta la política de reinicio: en un servicio aplica a todo, en otro solo si hay fallo.
  • Se definen redes overlay para los servicios.

Comandos ejecutados en terminal.

cd stacks cd app ls # construir la imagen local docker build -t frontend . # verificar imágenes docker images clear

Decisiones clave en docker-compose.yml.

  • Usar la imagen local: frontend:latest.
  • Evitar build: se trabaja con imágenes ya creadas o públicas como Nginx.
  • En deploy: replicas, paralelismo y un retraso de 10 segundos para recreación.
  • Dos redes: frontend y backend.
  • Tipo de red requerido por Docker Swarm: overlay.

Despliegue del stack con compose y Swarm.

# desplegar usando el archivo compose docker stack deploy -c docker-compose.yml mi dispatched

¿Qué pasa cuando caen réplicas en Docker Swarm?

Tras el despliegue, se crean las redes y los servicios definidos. En Docker Desktop se visualizan las réplicas: tres de Nginx y cinco del frontend. Al detener o eliminar una instancia, Swarm detecta la caída y crea una nueva. El estado pasa por “created” en color naranja y luego a verde cuando se ejecuta, manteniendo el servicio disponible todo el tiempo. Esta es la característica más importante de un orquestador: compensar fallos de forma automática.

  • Creación automática de redes frontend y backend.
  • Ocho contenedores activos: 3 Nginx y 5 frontend.
  • Estados visibles: created (naranja) y ejecutándose (verde).
  • Si una réplica falla, se repone sola tras el retraso configurado.

¿Cómo verificar y limpiar un stack?

Para inspeccionar y desmontar el despliegue se usan los comandos de stack. Al eliminar el stack, también se limpian las redes. Finalmente, se cierra Docker Swarm.

# listar stacks docker stack ls # eliminar el stack y sus redes docker stack rm mi despliegue # cerrar Swarm docker swarm live --force

¿Cuál es el alcance y las limitantes de Docker Swarm?

Funciona muy bien como mini orquestador de servicios en local y para sistemas pequeños o ligeramente medianos. Se manejan con comodidad entre tres y diez réplicas por servicio y el máximo de contenedores permitidos es de 100. Es un gran “entrenador” y puerta de entrada antes de pasar a opciones más robustas.

  • Ideal para primeros pasos con orquestadores.
  • Manejo sencillo de réplicas y autorecuperación.
  • Límite operativo: 100 contenedores.

¿Tienes dudas sobre tu configuración con Docker Swarm y Docker Compose? Comparte tu caso y comenta cómo definirías tus servicios, réplicas y redes overlay.