Cómo usar el comando docker swarm init para inicializar un swarm

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo inicializar un Docker Swarm utilizando el comando docker swarm init. Comenzarás inicializando un swarm básico para comprender el proceso fundamental.

A partir de la inicialización básica, luego explorarás escenarios más avanzados. Esto incluye inicializar un swarm con una dirección de anuncio específica para controlar la comunicación de red, habilitar el bloqueo automático (autolock) para una seguridad mejorada y configurar un puerto de ruta de datos personalizado. A través de estos pasos, adquirirás experiencia práctica en la configuración y personalización de un entorno Docker Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") subgraph Lab Skills docker/ls -.-> lab-555240{{"Cómo usar el comando docker swarm init para inicializar un swarm"}} docker/rm -.-> lab-555240{{"Cómo usar el comando docker swarm init para inicializar un swarm"}} docker/inspect -.-> lab-555240{{"Cómo usar el comando docker swarm init para inicializar un swarm"}} docker/info -.-> lab-555240{{"Cómo usar el comando docker swarm init para inicializar un swarm"}} end

Inicializar un swarm básico

En este paso, aprenderás cómo inicializar un Docker Swarm básico. Docker Swarm es una solución nativa de agrupación (clustering) y orquestación para Docker. Te permite crear y gestionar un clúster de nodos Docker.

Antes de inicializar el swarm, veamos el estado actual de Docker.

docker info

Deberías ver información sobre tu instalación de Docker. Busca la sección "Swarm". Debería indicar que el Swarm está inactivo.

Para inicializar un swarm básico, utilizarás el comando docker swarm init. Este comando convierte el host de Docker actual en un administrador (manager) del swarm.

docker swarm init

Después de ejecutar el comando, verás una salida que indica que el swarm se ha inicializado y que proporciona un comando para unir otros nodos al swarm como trabajadores (workers).

Verifiquemos que el swarm se haya inicializado correctamente.

docker info

Ahora, la sección "Swarm" debería mostrar que el Swarm está activo e indicar que el nodo actual es un administrador (manager).

También puedes utilizar el comando docker node ls para enumerar los nodos del swarm.

docker node ls

Deberías ver el nodo actual enumerado con el estado "Ready" y el rol "Manager".

Inicializar un swarm con una dirección de anuncio específica

En el paso anterior, inicializaste un Docker Swarm básico. En este paso, aprenderás cómo inicializar un swarm y especificar la dirección que el administrador (manager) del swarm anunciará a otros nodos. Esto es útil en entornos con múltiples interfaces de red o cuando quieres controlar qué dirección se utiliza para la comunicación del swarm.

Primero, debes salir del swarm existente. Puedes hacer esto utilizando el comando docker swarm leave. Dado que este es el único nodo y es un administrador (manager), debes utilizar la bandera --force.

docker swarm leave --force

Deberías ver una salida que confirme que el nodo ha salido del swarm.

Ahora, encontremos la dirección IP de tu máquina actual. Puedes utilizar el comando ip addr show y buscar la dirección IP asociada a tu interfaz de red (comúnmente eth0 o ens*).

ip addr show

Identifica la dirección IP que quieres utilizar como dirección de anuncio del swarm. Por ejemplo, si tu dirección IP es 172.17.0.2, utilizarás esa.

Ahora, inicializa el swarm nuevamente, pero esta vez especifica la dirección de anuncio utilizando la bandera --advertise-addr. Reemplaza <YOUR_IP_ADDRESS> con la dirección IP real que encontraste.

docker swarm init --advertise-addr <YOUR_IP_ADDRESS>

Verás una salida similar a la de la inicialización básica, pero el comando de unión ahora incluirá la dirección de anuncio especificada.

Para verificar que el swarm se haya inicializado con la dirección de anuncio correcta, puedes inspeccionar el swarm.

docker swarm inspect --pretty

Busca el campo AdvertiseAddr en la salida. Debería coincidir con la dirección IP que especificaste.

Inicializar un swarm con el autolock habilitado

En este paso, aprenderás cómo inicializar un Docker Swarm con la función de autolock (bloqueo automático) habilitada. El autolock ayuda a proteger el swarm contra accesos no autorizados al requerir una clave de desencriptación para desbloquear el swarm después de un reinicio del daemon de Docker.

Primero, sal del swarm existente como lo hiciste en el paso anterior.

docker swarm leave --force

Ahora, inicializa el swarm con la bandera --autolock. También puedes incluir nuevamente la bandera --advertise-addr si quieres especificar la dirección de anuncio. Reemplaza <YOUR_IP_ADDRESS> con la dirección IP de tu máquina.

docker swarm init --autolock --advertise-addr <YOUR_IP_ADDRESS>

Cuando inicialices el swarm con --autolock, la salida incluirá una "Swarm auto-lock key" (clave de bloqueo automático del swarm). Es crucial guardar esta clave en un lugar seguro. La necesitarás para desbloquear el swarm después de un reinicio del daemon de Docker.

Para verificar que el autolock está habilitado, puedes inspeccionar el swarm.

docker swarm inspect --pretty

Busca el campo AutoLockManagers en la salida. Debería estar configurado en true.

Ten en cuenta que dado que este es un swarm de un solo nodo en un entorno de laboratorio, no experimentarás el efecto completo del autolock que requiere una clave después de un reinicio del daemon. Sin embargo, este paso demuestra cómo habilitar la función.

Inicializar un swarm con un puerto de ruta de datos personalizado

En este paso, aprenderás cómo inicializar un Docker Swarm y especificar un puerto personalizado para la red de la ruta de datos. La red de la ruta de datos se utiliza para la comunicación entre los nodos del swarm en tareas como la detección de servicios y el equilibrio de carga. Por defecto, se utiliza el puerto 4789. Puedes necesitar cambiar este puerto si entra en conflicto con otros servicios en tu red.

Primero, sal del swarm existente.

docker swarm leave --force

Ahora, inicializa el swarm y especifica un puerto de ruta de datos personalizado utilizando la bandera --data-path-port. Usemos el puerto 5789 como ejemplo. También puedes incluir la bandera --advertise-addr y la bandera --autolock si lo deseas. Reemplaza <YOUR_IP_ADDRESS> con la dirección IP de tu máquina.

docker swarm init --data-path-port 5789 --advertise-addr < YOUR_IP_ADDRESS > --autolock

Verás la salida de la inicialización, incluyendo la clave de autolock si la habilitaste.

Para verificar que el puerto de ruta de datos personalizado está configurado, puedes inspeccionar el swarm.

docker swarm inspect --pretty

Busca el campo DataPathPort en la salida. Debería mostrar el puerto personalizado que especificaste, que es 5789 en este ejemplo.

Con esto concluyen los pasos para inicializar un Docker Swarm con varias opciones. Has aprendido cómo inicializar un swarm básico, especificar una dirección de anuncio, habilitar el autolock y establecer un puerto de ruta de datos personalizado.

Resumen

En este laboratorio, has aprendido el proceso fundamental de inicializar un Docker Swarm. Comenzaste inicializando un swarm básico utilizando el comando docker swarm init, observando los cambios en docker info y verificando el papel de administrador con docker node ls.

Posteriormente, exploraste opciones de inicialización más avanzadas. Aprendiste cómo salir de un swarm existente utilizando docker swarm leave --force y luego reinicializar el swarm mientras especificabas una dirección de anuncio particular utilizando la bandera --advertise-addr. Esto demostró cómo controlar la interfaz de red utilizada para la comunicación del swarm.