Docker Swarm: Orquestación de Contenedores
1. Comandos Docker Swarm: Orquestación de Contenedores #
Docker Swarm es una herramienta que permite la orquestación de contenedores. Esto significa que puedes gestionar y distribuir tus contenedores en varios nodos (máquinas) para crear un clúster. Docker Swarm te ayuda a escalar aplicaciones, gestionar su disponibilidad, y controlar el ciclo de vida de los servicios dentro de un clúster de múltiples máquinas.
2. Inicializar Docker Swarm #
docker swarm init: Inicializa un nodo en un clúster de Docker Swarm #
Este comando convierte tu máquina Docker en un nodo principal (o manager) dentro de un clúster de Docker Swarm. El nodo principal se encarga de gestionar y coordinar los contenedores y servicios que se distribuyen entre otros nodos del clúster.
Ejemplo:
1docker swarm init
Salida esperada:
Swarm initialized: current node (k23b7s8k2...) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-0rnsl5... 192.168.1.2:2377
Esta salida te muestra el comando que usarías para agregar nodos worker al clúster, que ejecutarán las tareas asignadas por el nodo manager.
3. Gestionar Servicios en Docker Swarm #
Un servicio en Docker Swarm es una tarea o conjunto de tareas que se ejecutan en el clúster. Por ejemplo, si deseas desplegar una aplicación web o una base de datos, lo harías creando un servicio.
docker service create <opciones>: Crear un nuevo servicio en el clúster #
Este comando crea y despliega un nuevo servicio en el clúster. Puedes especificar la imagen de Docker que debe ejecutarse, cuántas réplicas del servicio deseas, puertos a exponer, etc.
Ejemplo:
1docker service create --name web --replicas 3 -p 8080:80 nginx
Esto crea un servicio llamado web que ejecuta la imagen de nginx en 3 réplicas (3 contenedores distribuidos en el clúster). El puerto 80 del contenedor se mapea al puerto 8080 de la máquina anfitriona.
docker service ls: Listar servicios en ejecución en el clúster #
Este comando muestra todos los servicios que están actualmente corriendo en el clúster, junto con detalles como el número de réplicas y el estado de cada servicio.
Ejemplo:
1docker service ls
Salida esperada:
ID NAME MODE REPLICAS IMAGE PORTS
kj84jw83kd93 web replicated 3/3 nginx *:8080->80/tcp
Aquí ves que el servicio web está corriendo en modo replicated, con 3 réplicas de nginx activas y el puerto 8080 mapeado al puerto 80 del contenedor.
docker service rm <nombreservicio>: Eliminar un servicio #
Este comando elimina un servicio del clúster. Al hacerlo, todas las réplicas (contenedores) asociadas a ese servicio se detendrán y serán eliminadas.
Ejemplo:
1docker service rm web
Esto elimina el servicio web que creaste anteriormente, deteniendo y eliminando las 3 réplicas de nginx que estaban ejecutándose.
docker service update <nombreservicio>: Actualizar un servicio (escalabilidad, imagen, etc.) #
Este comando permite modificar un servicio que ya está en ejecución, como cambiar el número de réplicas (escalar), actualizar la imagen o cambiar cualquier otra configuración.
Ejemplo:
1docker service update --replicas 5 web
Esto actualiza el servicio web para que ahora tenga 5 réplicas en lugar de 3. Docker Swarm automáticamente escalará el servicio creando 2 nuevos contenedores para alcanzar el nuevo número de réplicas.
docker service ps <nombreservicio>: Mostrar las tareas asignadas a un servicio #
Este comando muestra las tareas o contenedores individuales que están asociados con un servicio, junto con el estado de cada uno. Es útil para ver en qué nodos del clúster se están ejecutando los contenedores y su estado actual.
Ejemplo:
1docker service ps web
Salida esperada:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE
0k39jf93kf39 web.1 nginx node1 Running Running 5 mins ago
8fj48f48fj20 web.2 nginx node2 Running Running 5 mins ago
l29fsd93kf39 web.3 nginx node3 Running Running 5 mins ago
Aquí puedes ver las 3 tareas (contenedores) del servicio web, y dónde están ejecutándose (en los nodos node1, node2, y node3).
Resumen del tema
Conceptos clave #
- Docker Swarm y Servicios: orquestador nativo de Docker que gestiona servicios declarativos con alta disponibilidad y balanceo de carga.
- Gestión de Servicios:
docker swarm init: inicializa el clúster convirtiendo el nodo actual en Manager.docker service create --name web --replicas 3 -p 80:80 nginx: despliega un servicio replicado.docker service ls: lista los servicios y el estado de sus réplicas.docker service ps <servicio>: muestra en qué nodos físicos corre cada réplica/tarea.docker service update --replicas 5 <servicio>: escalado horizontal dinámico sin tiempo de inactividad.
Qué debes recordar #
Docker Swarm permite escalar horizontalmente tus aplicaciones mediante réplicas distribuidas y gestiona automáticamente el reemplazo de contenedores fallidos.