Creando un Docker Swarm multinodo real

Clase 11 de 24Curso de Swarm

Resumen

Levanta un entorno de Docker Swarm multinodo en Play with Docker con pasos claros y comandos reales. Aquí verás cómo resolver el error inicial por múltiples interfaces de red, diferenciar roles de manager y worker, y desplegar un servicio con verificación de tareas. Todo con comandos como docker swarm init, docker node ls, docker service create y docker service ps.

¿Cómo inicializar un Docker Swarm multinodo?

En Play with Docker, la máquina puede tener más de una interfaz de red. Al ejecutar docker swarm init sin parámetros, aparece un error porque el manager no sabe en qué dirección escuchar a otros nodos. La solución es usar --advertise-addr con la IP correcta.

  • Si hay varias interfaces, verifica con ifconfig y elige la IP activa.
  • Usa la opción adecuada para que el manager escuche en esa IP.
docker swarm init --advertise-addr 192.168.0.33

Al inicializar correctamente, se muestra el join token para sumar más nodos como workers. Ese token se copiará y pegará en los otros nodos.

¿Qué hacer si hay varias interfaces de red?

  • Identifica las interfaces: Ethernet uno y Ethernet dos.
  • El sistema te pedirá especificar la IP de escucha.
  • Apunta a la IP mostrada arriba en la terminal del entorno.

¿Qué obtienes al iniciar el swarm?

  • Un nodo con rol manager indicado con una “personita” en la interfaz de Play with Docker.
  • El join token para agregar workers.

¿Cómo unir nodos y entender los roles de manager y worker?

Al crear nodos nuevos, tienen el docker daemon pero no están en modo Swarm. Esto se confirma con docker info, donde la sección swarm no está activa hasta que se ejecute el join con el token.

  • En cada nodo nuevo, pega el comando del join token.
  • Verás el mensaje: “This node joined as a swarm worker.”
  • Los workers no administran el estado del cluster por seguridad.
# En un nodo recién creado
docker info  # muestra que swarm no está activado todavía
# Pegar el comando de join token aquí

Solo un manager puede consultar y administrar el estado del Swarm. Por ejemplo, en un worker docker node ls no funciona para listar el cluster; debes correrlo en el manager.

# En el manager
docker node ls

Observa estos detalles clave al listar nodos: - manager status indica el rol; verás “líder” en el manager principal. - El asterisco marca el nodo en el que estás parado, útil en Swarms grandes.

¿Cómo desplegar un servicio y saber dónde corre?

Con el Swarm multinodo listo, puedes crear un servicio. El ejemplo usa Alpine para hacer ping continuo a un dominio.

¿Cómo crear el servicio pinger?

  • Nombra el servicio para gestionarlo fácil.
  • Usa la imagen alpine con el comando ping.
docker service create --name pinger alpine ping www.google.com

Luego verifica su estado general.

docker service ls

Verás que aparece como “replicado”, aun si tiene una sola tarea.

¿Cómo saber en qué nodo corre?

Para conocer dónde se asignaron las tareas, usa docker service ps con el nombre del servicio.

docker service ps pinger
  • El output indica el nodo donde está ejecutándose la tarea del servicio.
  • Por defecto, las tareas pueden asignarse a cualquier nodo del Swarm.
  • Si necesitas limitar dónde corre, deberás aplicar restricciones de despliegue más adelante.

¿Qué habilidades y comandos se practican?

Dominas el flujo esencial de un Swarm distribuido y seguro.

  • Identificación de interfaces y uso de --advertise-addr para inicializar el manager correctamente.
  • Activación de workers mediante join token y verificación con docker info.
  • Administración solo desde managers: docker node ls para roles, líder y nodo actual con asterisco.
  • Despliegue de servicios con docker service create y chequeo con docker service ls.
  • Localización de tareas con docker service ps para saber en qué nodo corre.
  • Comprensión de que, por defecto, las tareas se asignan a cualquier nodo y que existen restricciones para controlar la ubicación.

¿Quieres que abordemos el escalado horizontal de servicios y las restricciones de despliegue en tu caso real? Cuéntame tu escenario y lo vemos juntos.