English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Docker Swarm es una herramienta de gestión de clúster de Docker. Transforma un grupo de hosts Docker en un solo host virtual Docker. Docker Swarm proporciona una API de Docker estándar, por lo que cualquier herramienta que ya se comunique con el demonio Docker puede usar Swarm para expandirse fácilmente a múltiples hosts.
Las herramientas que admite incluyen, pero no se limitan a, lo siguiente:
Dokku
Docker Compose
Docker Machine
Jenkins
Como se muestra en la imagen siguiente, el clúster swarm está compuesto por nodos administradores (manager) y nodos de trabajo (work node).
swarm mananger:se encarga de toda la gestión del clúster, incluyendo la configuración del clúster, la gestión de servicios y todo lo relacionado con el clúster.
nodo de trabajo:que es el nodo disponible en la imagen, se encarga principalmente de ejecutar los servicios para ejecutar tareas (task).
Los siguientes ejemplos se presentan utilizando Docker Machine y virtualbox, asegúrate de que tu host ya tiene instalado virtualbox.
Crear máquina docker:
$ docker-machine create -d virtualbox swarm-manager
Inicializar el clúster swarm, la máquina en la que se realiza la inicialización es el nodo administrador del clúster.
$ docker-machine ssh swarm-manager $ docker swarm init --advertise-addr 192.168.99.107 #La IP aquí es la IP asignada al momento de crear la máquina.
La salida anterior demuestra que se ha inicializado con éxito. Es necesario copiar la siguiente línea, que se utilizará al agregar el nodo de trabajo:
docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
Aquí se crean directamente dos máquinas, swarm-worker1 y swarm-worker2 .
Ingresar a dos máquinas respectivamente, especificar agregar al clúster creado en el paso anterior, aquí se utilizará el contenido copiado en el paso anterior.
La salida de datos anterior indica que se ha agregado con éxito.
En la imagen superior, debido a que el contenido copiado en el paso anterior es largo, se cortará automáticamente. En realidad, el comando ejecutado en la imagen es el siguiente:
docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
Entrar al nodo de gestión y ejecutar: docker info para ver la información del clúster actual.
$ docker info
A través del círculo rojo, se puede saber que en el clúster en ejecución hay tres nodos, uno de los cuales es el nodo de gestión.
Atención:Cualquier operación relacionada con la gestión del clúster se realiza en el nodo de gestión.
En el siguiente ejemplo, se crea un servicio llamado helloworld en un nodo de trabajo, aquí se asigna aleatoriamente a un nodo de trabajo:
docker@swarm-manager:~$ docker service create --replicas 1 --name helloworld alpine ping docker.com
Ver en qué nodo se ejecuta el servicio helloworld, se puede ver que actualmente está en swarm.-worker1 Nodo:
docker@swarm-manager:~$ docker service ps helloworld
Ver la información específica de la implementación de helloworld:
docker@swarm-manager:~$ docker service inspect --pretty helloworld
Vamos a expandir el servicio helloworld a dos nodos.
docker@swarm-manager:~$ docker service scale helloworld=2
Se puede ver que se ha expandido de un nodo a dos nodos.
docker@swarm-manager:~$ docker service rm helloworld
Verificar si se ha eliminado:
En el siguiente ejemplo, presentaremos cómo actualizar el redis a una versión más alta mediante actualizaciones en espiral.
Crear una 3.0.6 la versión de redis.}
docker@swarm-manager:~$ docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6
Actualizar redis de manera continua.
docker@swarm-manager:~$ docker service update --image redis:3.0.7 redis
Como se puede ver en la imagen, la versión de redis ya ha pasado de 3.0.6 Se ha actualizado a 3.0.7,lo que indica que el servicio se ha actualizado con éxito.
Ver todos los nodos:
docker@swarm-manager:~$ docker node ls
Se puede ver que todos los nodos actuales están en estado Active y pueden recibir nuevas tareas.
Detener el nodo swarm-worker1:
Atención:swarm-worker1 El estado se cambia a Drain. No afectará los servicios del clúster, solo swarm-worker1 El nodo ya no recibirá nuevas tareas, lo que reducirá la capacidad de carga del clúster.
Se puede activar nuevamente el nodo con el siguiente comando:
docker@swarm-manager:~$ docker node update --disponibilidad activa swarm-worker1