Enjambre Docker
Swarm es una herramienta de gestión y coordinación de clústeres integrada en el motor Docker (nativo) mediante SwarmKit. Docker Swarm es uno de los proyectos oficiales de los Tres Mosqueteros de Docker. Proporciona servicios de clúster de contenedores Docker y también es la solución central del soporte oficial de Docker para el ecosistema de nube de contenedores.
Al usarlo, los usuarios pueden empaquetar varios hosts Docker en un gran host Docker virtual para construir rápidamente una plataforma de nube de contenedores. El modo Swarm tiene almacenamiento kv incorporado y proporciona muchas características nuevas, tales como: diseño descentralizado con tolerancia a fallas, descubrimiento de servicios incorporado, equilibrio de carga, malla de enrutamiento, expansión dinámica, actualizaciones continuas, transmisión segura, etc. Esto permite que los clústeres Swarm nativos de Docker compitan con Mesos y Kubernetes. Antes de utilizar un clúster Swarm, es necesario comprender los siguientes conceptos.
El host que ejecuta Docker puede inicializar activamente un clúster de Swarm o unirse a un clúster de Swarm existente, lo que convierte al host que ejecuta Docker en un nodo del clúster de Swarm. Los nodos se dividen en nodos de gestión y nodos de trabajadores.
El nodo administrador se utiliza para administrar el clúster Swarm. El comando docker swarm básicamente solo se ejecuta en el nodo administrador (el comando de salida del nodo docker swarm se puede ejecutar en el nodo trabajador). Un clúster Swarm puede tener múltiples nodos de administración, pero solo un nodo de administración puede convertirse en líder, lo que se logra mediante el protocolo raft.
Un nodo trabajador es un nodo de ejecución de tareas al que el nodo de gestión envía servicios para su ejecución. De forma predeterminada, los nodos de gestión también actúan como nodos trabajadores. También puede configurar el servicio para que se ejecute solo en nodos de administración. Esta imagen del sitio web de Docker muestra la relación entre los nodos de administración y trabajadores en un clúster.
Una tarea es la unidad de programación más pequeña en Swarm. Actualmente, un solo contenedor es una colección de tareas y el servicio define los atributos de la tarea. El servicio tiene dos modos:
Estos dos modos se especifican mediante el parámetro --mode de la creación del servicio Docker. Esta imagen del sitio web de Docker muestra la relación entre contenedores, tareas y servicios.
Aquí, usamos la máquina acoplable en la sección anterior como host del clúster, primero creamos un nodo de administración y luego ejecutamos el comando de inicialización del clúster en el nodo:
Ejecutar docker swarm El nodo que ejecuta el comando init se convertirá automáticamente en el nodo de administración.
Una vez inicializado el nodo de administración, puede usar docker-machine para crear un nodo trabajador y agregarlo al nodo de administración:
Podemos ver la información anterior: Este nodo se unió un enjambre como trabajador.
El nodo se unió al enjambre como trabajador, lo que indica que el nodo se ha agregado al enjambre. , lo que indica que el nodo se ha unido al clúster de enjambre.
Después de los dos pasos anteriores, tenemos un clúster Swarm mínimo que consta de un nodo de administración y dos nodos trabajadores.
Utilice Docker Node ls para ver el clúster en el nodo de administración:
Utilice los registros de servicio de Docker para ver los registros de servicio.
Utilice docker service rm para eliminar un servicio del clúster Swarm:
Al igual que utiliza docker-compose.yml para configurar e iniciar varios contenedores a la vez, puede utilizar el comando compose. archivo (docker-compose.yml) para configurar e iniciar múltiples servicios en el clúster Swarm.
En la sección anterior, utilizamos Docker Service Create para implementar solo un servicio a la vez; usando Docker-compose.yml, podemos iniciar varios servicios relacionados a la vez.
Tomemos como ejemplo la implementación de WordPress en un clúster Swarm: (docker-compose.yml)
Entre ellas, la restricción: [node.role == manager] es la estrategia de programación, registrada en/swarm/scheduler/filter/
Este archivo se crea en el nodo de administración del clúster Swarm, donde el servicio de visualización proporciona una página de visualización que nos permite ver desde el navegador cómo funciona cada servicio en el clúster está ejecutando el nodo.
Para usar docker-compose.yml en un clúster Swarm, necesitamos usar el comando docker stack, que se explica en detalle a continuación.
Utilice la implementación de la pila acoplable para implementar el servicio, donde el parámetro -c especifica el nombre del archivo de redacción.
Para eliminar un servicio, use docker stack down:
Este comando no elimina el volumen de datos utilizado por el servicio, si desea eliminar el volumen de datos, use docker volume rm; .
Este comando no elimina los volúmenes de datos utilizados por el servicio.