Docker Swarm es una herramienta de orquestación de contenedores. El modo Swarm en Docker se introdujo en la versión 1.12, que permite implementar varios contenedores en varios hosts de Docker. Para este Docker, use una red superpuesta para el descubrimiento de servicios y con un balanceador de carga incorporado para escalar los servicios. Una de las ventajas clave de Docker Swarm es que la configuración de los servicios de Docker, como el volumen y la red, se puede modificar sin necesidad de reiniciar manualmente el servicio. Docker actualizará la configuración, detendrá las tareas de servicio con la configuración desactualizada y cree otros nuevos que coincidan con la configuración deseada.
Los conceptos clave del modo enjambre
- Node: un Node es una instancia de un motor Docker que se conecta al Swarm. Puede ejecutar uno o más Nodes en una sola computadora física o servidor en la nube. Los Nodes pueden ser administradores o trabajadores. El Node administrador distribuye unidades de trabajo denominadas tareas a los Nodes trabajadores. Los Nodes trabajadores reciben y ejecutan tareas enviadas desde los Nodes administradores.
- Servicios: Un servicio es un concepto de alto nivel relacionado con una colección de tareas que deben ejecutar los trabajadores. Un ejemplo de un servicio es un servidor HTTP que se ejecuta como un contenedor Docker en tres Nodes.
- Equilibrio de carga: Docker incluye un equilibrador de carga para procesar requests en todos los contenedores del servicio.
¿Cómo funciona el enjambre Docker?
Cuando desee implementar un contenedor en el enjambre primero, debe iniciar los servicios. El servicio consta de varios contenedores de la misma imagen. Estos servicios se implementan dentro de un Node, por lo que para implementar un enjambre, se debe implementar al menos un Node. Como puede ver en el siguiente diagrama, el Node administrador es responsable de la asignación de la tarea, el envío de las tareas y la programación de las tareas. La API del administrador es el medio entre el Node administrador y el Node trabajador para comunicarse entre sí mediante el protocolo HTTP. El servicio de un clúster puede ser utilizado por el otro. Toda la ejecución de la tarea la realiza el Node trabajador.
Se puede crear un solo Node administrador, pero el Node trabajador no se puede crear sin un Node administrador. El número ideal para el recuento del Node administrador es siete. Aumentar el número del Node administrador no significa que aumentará la escalabilidad.
Características del modo enjambre
- Administración de clústeres: – Para crear Swarm, puede usar la CLI del motor Docker donde puede implementar las aplicaciones. No se requiere software de orquestación adicional para administrar un enjambre.
- Redes de múltiples hosts: Swarm puede contener múltiples redes superpuestas, por lo que al implementar el servicio puede especificar la red en la que desea implementar su servicio. El administrador de enjambres asigna automáticamente direcciones a los contenedores en la red superpuesta cuando inicializa o actualiza la aplicación.
- Equilibrio de carga: al implementar cualquier servicio en el puerto en particular, el enjambre equilibra automáticamente la carga de estos puertos.
- Escalado: cuando escala hacia arriba o hacia abajo, el administrador de enjambres se adapta automáticamente agregando o eliminando tareas para mantener el estado deseado.
Comandos CLI del modo Swarm
docker swarm init: este comando se usa para inicializar el swarm.
docker swarm init [OPTIONS]
docker swarm join : al usar este comando, puede unir un Node a un enjambre. El Node se une como un Node administrador o un Node trabajador en función del token que pasa con el indicador –token.
docker swarm join [OPTIONS] HOST:PORT
docker service create: este es un comando de administración de clústeres y debe ejecutarse en un Node administrador de Swarm.
docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]
docker service inspect: este comando se usa para inspeccionar el servicio en particular y todos los detalles se mostrarán en formato JSON.
docker service inspect [OPTIONS] SERVICE [SERVICE...]
docker service ls: este comando se usa para ver la lista completa de todos los servicios en esa red.
docker service ls [OPTIONS]
docker service rm: este comando se usa para eliminar el servicio específico que desea eliminar.
docker service rm SERVICE [SERVICE...]