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:
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:
Verificando el Clúster
Para verificar que los nodos se han unido correctamente al clúster, ejecuta:
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:
Listar Servicios
Para listar los servicios en el clúster, usa:
Ver Detalles del Servicio
Para ver los detalles de un servicio específico, usa:
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:
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:
Eliminar un Servicio
Para eliminar un servicio, usa el comando docker service rm
. Por ejemplo, para eliminar el servicio my-nginx
, ejecuta:
Ejercicio Práctico
Ejercicio 1: Configurar un Clúster de Docker Swarm
- Inicializa un clúster de Docker Swarm en un nodo.
- Une al menos dos nodos adicionales al clúster.
- Verifica que todos los nodos se han unido correctamente.
Ejercicio 2: Desplegar y Escalar un Servicio
- Despliega un servicio Nginx en el clúster.
- Escala el servicio a 5 réplicas.
- Verifica que el servicio se ha escalado correctamente.
Soluciones
Solución al Ejercicio 1
- Inicializa el clúster en el nodo manager:
docker swarm init
- Une los nodos adicionales al clúster:
docker swarm join --token <token> <manager-ip>:2377
- Verifica los nodos en el clúster:
docker node ls
Solución al Ejercicio 2
- Despliega el servicio Nginx:
docker service create --name my-nginx -p 80:80 nginx
- Escala el servicio a 5 réplicas:
docker service scale my-nginx=5
- 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.
Docker: De Principiante a Avanzado
Módulo 1: Introducción a Docker
- ¿Qué es Docker?
- Instalando Docker
- Arquitectura de Docker
- Comandos Básicos de Docker
- Entendiendo las Imágenes de Docker
- Creando tu Primer Contenedor Docker
Módulo 2: Trabajando con Imágenes Docker
- Docker Hub y Repositorios
- Construyendo Imágenes Docker
- Conceptos Básicos de Dockerfile
- Gestionando Imágenes Docker
- Etiquetado y Publicación de Imágenes
Módulo 3: Contenedores Docker
- Ejecutando Contenedores
- Ciclo de Vida del Contenedor
- Gestionando Contenedores
- Redes en Docker
- Persistencia de Datos con Volúmenes
Módulo 4: Docker Compose
- Introducción a Docker Compose
- Definiendo Servicios en Docker Compose
- Comandos de Docker Compose
- Aplicaciones Multi-Contenedor
- Variables de Entorno en Docker Compose
Módulo 5: Conceptos Avanzados de Docker
- Profundización en Redes Docker
- Opciones de Almacenamiento Docker
- Mejores Prácticas de Seguridad en Docker
- Optimizando Imágenes Docker
- Registro y Monitoreo en Docker
Módulo 6: Docker en Producción
- CI/CD con Docker
- Orquestando Contenedores con Docker Swarm
- Introducción a Kubernetes
- Desplegando Contenedores Docker en Kubernetes
- Escalado y Balanceo de Carga