Compartir comentarios
Las respuestas se generan en base a la documentación.

Modo Swarm

Note

El modo Swarm es una característica avanzada para gestionar un clúster de demonios de Docker.

Usa el modo Swarm si tienes la intención de utilizar Swarm como entorno de ejecución en producción.

Si no planeas realizar el despliegue con Swarm, utiliza Docker Compose en su lugar. Si estás desarrollando para un despliegue en Kubernetes, considera usar la funcionalidad integrada de Kubernetes en Docker Desktop.

Las versiones actuales de Docker incluyen el modo Swarm para gestionar de forma nativa un clúster de Docker Engines, denominado swarm. Utiliza la CLI de Docker para crear un swarm, desplegar servicios de aplicaciones en él y gestionar su comportamiento.

El modo Docker Swarm está integrado en Docker Engine. No confundas el modo Docker Swarm con Docker Classic Swarm, el cual ya no se desarrolla activamente.

Características destacadas

Gestión de clústeres integrada con Docker Engine

Utiliza la CLI de Docker Engine para crear un swarm de Docker Engines donde desplegar servicios de aplicaciones. No necesitas software de orquestación adicional para crear o gestionar un swarm.

Diseño descentralizado

En lugar de gestionar la diferenciación entre los roles de los nodos en el momento del despliegue, Docker Engine maneja cualquier especialización en tiempo de ejecución. Puedes desplegar ambos tipos de nodos, administradores (managers) y trabajadores (workers), utilizando Docker Engine. Esto significa que puedes construir un swarm completo a partir de una única imagen de disco.

Modelo de servicio declarativo

Docker Engine utiliza un enfoque declarativo para permitirte definir el estado deseado de los distintos servicios en tu pila de aplicaciones. Por ejemplo, puedes describir una aplicación compuesta por un servicio web de frontend con servicios de cola de mensajes y una base de datos en el backend.

Escalabilidad

Para cada servicio, puedes declarar el número de tareas que quieres ejecutar. Al escalar hacia arriba o hacia abajo, el administrador del swarm se adapta automáticamente añadiendo o eliminando tareas para mantener el estado deseado.

Reconciliación del estado deseado

El nodo administrador del swarm supervisa constantemente el estado del clúster y reconcilia cualquier diferencia entre el estado real y el estado deseado expresado. Por ejemplo, si configuras un servicio para ejecutar 10 réplicas de un contenedor y una máquina trabajadora que aloja dos de esas réplicas falla, el administrador crea dos nuevas réplicas para reemplazar las que fallaron. El administrador del swarm asigna las nuevas réplicas a los trabajadores que estén en ejecución y disponibles.

Redes multi-host

Puedes especificar una red superpuesta (overlay network) para tus servicios. El administrador del swarm asigna automáticamente direcciones a los contenedores en la red superpuesta cuando inicializa o actualiza la aplicación.

Descubrimiento de servicios

Los nodos administradores del swarm asignan a cada servicio un nombre DNS único y balancean la carga de los contenedores en ejecución. Puedes consultar cada contenedor que se ejecuta en el swarm a través de un servidor DNS integrado en el swarm.

Balanceo de carga

Puedes exponer los puertos de los servicios a un balanceador de carga externo. A nivel interno, el swarm te permite especificar cómo distribuir los contenedores del servicio entre los nodos.

Seguro por defecto

Cada nodo en el swarm aplica cifrado y autenticación mutua TLS para proteger las comunicaciones entre sí y con todos los demás nodos. Tienes la opción de utilizar certificados raíz autofirmados o certificados de una CA raíz personalizada.

Actualizaciones continuas (Rolling updates)

Al momento de realizar un despliegue, puedes aplicar actualizaciones de servicios a los nodos de forma incremental. El administrador del swarm te permite controlar el retraso entre el despliegue del servicio en diferentes conjuntos de nodos. Si algo sale mal, puedes revertir (roll back) a una versión anterior del servicio.

¿Qué sigue?