Introducción

Docker Swarm es una herramienta de orquestación de contenedores que permite gestionar un clúster de nodos Docker como si fuera una sola máquina virtual. Con Docker Swarm, puedes desplegar, gestionar y escalar aplicaciones en contenedores de manera eficiente y sencilla.

Objetivos del Módulo

  • Comprender los conceptos básicos de Docker Swarm.
  • Configurar un clúster de Docker Swarm.
  • Desplegar servicios en un clúster de Docker Swarm.
  • Gestionar y escalar servicios en Docker Swarm.

Conceptos Básicos de Docker Swarm

¿Qué es Docker Swarm?

Docker Swarm convierte un grupo de máquinas Docker en un clúster coordinado. En un clúster de Swarm, puedes definir servicios que se ejecutan en múltiples nodos, proporcionando alta disponibilidad y escalabilidad.

Componentes Clave

  • Nodo: Una instancia de Docker que participa en el clúster de Swarm.
  • Manager: Nodo que gestiona el clúster y toma decisiones sobre la distribución de tareas.
  • Worker: Nodo que ejecuta las tareas asignadas por los managers.
  • Servicio: Definición de una aplicación que se ejecuta en el clúster.
  • Tarea: Una instancia de un contenedor que forma parte de un servicio.

Configurando un Clúster de Docker Swarm

Paso 1: Inicializar el Clúster

Para inicializar un clúster de Docker Swarm, ejecuta el siguiente comando en el nodo que deseas convertir en manager:

docker swarm init

Este comando inicializa el nodo como manager y proporciona un token que puedes usar para unir otros nodos al clúster.

Paso 2: Unir Nodos al Clúster

En los nodos que deseas unir al clúster como workers, ejecuta el siguiente comando, reemplazando <token> y <manager-ip> con el token y la dirección IP del manager:

docker swarm join --token <token> <manager-ip>:2377

Verificando el Clúster

Para verificar que los nodos se han unido correctamente al clúster, ejecuta:

docker node ls

Desplegando Servicios en Docker Swarm

Crear un Servicio

Para crear un servicio en Docker Swarm, usa el comando docker service create. Por ejemplo, para desplegar un servicio Nginx, ejecuta:

docker service create --name my-nginx -p 80:80 nginx

Listar Servicios

Para listar los servicios en el clúster, usa:

docker service ls

Ver Detalles del Servicio

Para ver los detalles de un servicio específico, usa:

docker service ps my-nginx

Gestionando y Escalando Servicios

Escalar un Servicio

Para escalar un servicio, usa el comando docker service scale. Por ejemplo, para escalar el servicio my-nginx a 3 réplicas, ejecuta:

docker service scale my-nginx=3

Actualizar un Servicio

Para actualizar la imagen de un servicio, usa el comando docker service update. Por ejemplo, para actualizar el servicio my-nginx a una nueva versión de Nginx, ejecuta:

docker service update --image nginx:latest my-nginx

Eliminar un Servicio

Para eliminar un servicio, usa el comando docker service rm. Por ejemplo, para eliminar el servicio my-nginx, ejecuta:

docker service rm my-nginx

Ejercicio Práctico

Ejercicio 1: Configurar un Clúster de Docker Swarm

  1. Inicializa un clúster de Docker Swarm en un nodo.
  2. Une al menos dos nodos adicionales al clúster.
  3. Verifica que todos los nodos se han unido correctamente.

Ejercicio 2: Desplegar y Escalar un Servicio

  1. Despliega un servicio Nginx en el clúster.
  2. Escala el servicio a 5 réplicas.
  3. Verifica que el servicio se ha escalado correctamente.

Soluciones

Solución al Ejercicio 1

  1. Inicializa el clúster en el nodo manager:
    docker swarm init
    
  2. Une los nodos adicionales al clúster:
    docker swarm join --token <token> <manager-ip>:2377
    
  3. Verifica los nodos en el clúster:
    docker node ls
    

Solución al Ejercicio 2

  1. Despliega el servicio Nginx:
    docker service create --name my-nginx -p 80:80 nginx
    
  2. Escala el servicio a 5 réplicas:
    docker service scale my-nginx=5
    
  3. Verifica el estado del servicio:
    docker service ps my-nginx
    

Conclusión

En esta sección, hemos aprendido a configurar un clúster de Docker Swarm, desplegar servicios y gestionar su escalabilidad. Docker Swarm es una herramienta poderosa para la orquestación de contenedores, proporcionando una manera sencilla y eficiente de gestionar aplicaciones distribuidas. En el próximo módulo, exploraremos cómo integrar Docker con Kubernetes para una orquestación aún más avanzada.

© Copyright 2024. Todos los derechos reservados