Aprende a orquestar contenedores de forma simple con Docker Swarm. Verás cómo un orquestador de contenedores gestiona red, algunos volúmenes y despliegues, para que dediques tu tiempo a lo importante: los servicios. Empezarás con comandos básicos para crear servicios, definir réplicas, resolver conflictos de puertos, escalar en caliente y limpiar el entorno.
¿Qué es un orquestador de contenedores y por qué empezar con Docker Swarm?
Un orquestador automatiza tareas clave: red, volúmenes y despliegues coordinados. Así evitas repetir configuraciones y te apoyas en una capa que mantiene todo funcionando. Entre los orquestadores, Kubernetes es “el mejor”, pero es grande y demanda tiempo. Para dar los primeros pasos, la recomendación es usar Docker Swarm, el orquestador por defecto de Docker, ideal para practicar localmente con un “mini orquestador”.
Orquestador de contenedores: gestiona red, volúmenes y despliegues por ti.
Kubernetes: potente, pero de gran tamaño y curva alta.
Docker Swarm: inicio rápido y práctico en local.
Servicio y réplicas: despliegue como servicio con múltiples instancias.
¿Cómo iniciar Docker Swarm y crear servicios con réplicas?
Comienza desde la terminal. Inicializa el swarm y crea tu primer servicio con réplicas. Verás cómo el orquestador descarga imágenes y levanta instancias automáticamente.
# Inicializar el orquestadordocker swarm init
¿Cómo crear el servicio web con NGINX?
Crea un servicio llamado “web” con 3 réplicas y publica un puerto. La imagen utilizada es NGINX.
# Servicio web con NGINX y 3 réplicas# Publicando el puerto 80 en el host hacia el 80 del contenedordockerservice create --name web --replicas 3 -p 80:80 nginx
El orquestador descarga la imagen si no existe.
Levanta tantas réplicas como indiques.
Publica el puerto para acceso externo.
¿Qué hacer cuando un puerto ya está en uso?
Al crear otro servicio, si reutilizas un puerto ya ocupado, fallará. Cambia a un puerto libre y vuelve a ejecutar.
# Intento inicial (puerto 80 en uso)dockerservice create --name api --replicas 5 -p 80 aminespinoza/minimal-api
# Corrección usando otro puerto (8080)dockerservice create --name api --replicas 5 -p 8080 aminespinoza/minimal-api
No puedes usar el mismo puerto dos veces.
Ajusta el mapeo y reintenta.
¿Cómo ver servicios y tareas en ejecución?
Lista servicios activos, sus réplicas y puertos mapeados. Luego inspecciona el detalle de un servicio.
# Listar serviciosdockerservicels# Ver tareas/instancias de un serviciodockerserviceps api
Verás el estado “running” y la cantidad de instancias.
Las tareas se nombran como “api.1”, “api.2”, etc.
Encontrarás columnas de errores y puertos para diagnóstico rápido.
¿Cómo escalar, eliminar y salir del swarm?
Si un servicio necesita más capacidad, escala sus réplicas sin redesplegar desde cero. También puedes eliminar servicios y, al final, salir del swarm para limpiar todo.
# Escalar el servicio web a 5 réplicasdockerservice scale web=5# Eliminar un serviciodockerservicerm web
# Comprobar el estadodockerservicels# Salir del swarm y forzar la limpiezadocker swarm leave --force
Escalado inmediato: más “vitaminas” sin interrumpir el servicio.
Limpieza controlada: elimina servicios que ya no necesitas.
También puedes visualizar las instancias en Docker Desktop.
Habilidades y conceptos reforzados:
Inicializar un orquestador con docker swarm init.
Desplegar un servicio con docker service create.
Definir réplicas y exponer puertos sin repetir contenedores manualmente.
Listar e inspeccionar servicios con docker service ls y docker service ps.
Escalar servicios con docker service scale.
Eliminar servicios y salir del swarm con docker service rm y docker swarm leave --force.
¿Te quedó alguna duda o quieres compartir tu experiencia con Docker Swarm y réplicas? Deja tu pregunta o comentario y seguimos la conversación.
Jugando un poquito con Docker Swarm, me di cuenta que la opción de scale también puede funcionar para disminuir el número de contenedores.
docker service scale web=2
También se puede hacer para varios servicios a la vez.
docker service scale web=5 api=5```¡A jugar!
En Docker Swarm, las réplicas son instancias de un servicio que se ejecutan simultáneamente para asegurar disponibilidad y escalabilidad. Por ejemplo, si configuras un servicio con 3 réplicas, Docker Swarm desplegará 3 instancias del contenedor correspondiente. Esto permite manejar más tráfico y mejorar la tolerancia a fallos, ya que si una réplica falla, las demás siguen operativas. Puedes escalar fácilmente el número de réplicas con el comando docker service scale. Esto es fundamental para la orquestación y gestión eficiente de contenedores en producción.
Hay otra forma mas sencilla de iniciar con Kubernetes y es minikube. Te da la opción de desplegar kubernetes en tu local sin necesidad de aprovisionar muchos recursos ni hacer muchas configuraciones
No me funciono la imagen aminespinoza/minimal-api.
Por si a alguien le sirva, use esta kennethreitz/httpbin
Docker Swarm puede no ser adecuado en proyectos que requieren:
Escalabilidad masiva: Proyectos que necesitan escalar a miles de nodos pueden beneficiarse más de Kubernetes.
Funciones avanzadas: Si se requieren características como gestión avanzada de secretos, políticas de red complejas o autoescalado, Kubernetes es preferible.
Ecosistema amplio: Proyectos que necesitan integraciones específicas con herramientas o servicios que solo son compatibles con Kubernetes.
Para proyectos más sencillos y con menor carga, Docker Swarm sigue siendo una opción viable.