Despliegue Docker Swarm con réplicas de Nginx

Clase 30 de 34Curso de Docker Avanzado

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.