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 localdocker build -t frontend .# verificar imágenesdocker 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 composedocker 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 stacksdocker stack ls# eliminar el stack y sus redesdocker stack rm mi despliegue
# cerrar Swarmdocker 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.