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.