Curso Docker

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.

1. 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.


2. 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 <nombre_servicio>: 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 <nombre_servicio>: 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 <nombre_servicio>: 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 de los Comandos

  • docker swarm init: Inicializa un nodo como manager en un clúster de Docker Swarm.
  • docker service create: Crea un nuevo servicio en el clúster con las opciones que definas, como la imagen, las réplicas, y los puertos.
  • docker service ls: Lista todos los servicios activos en el clúster.
  • docker service rm: Elimina un servicio del clúster.
  • docker service update: Actualiza un servicio en ejecución (como cambiar el número de réplicas).
  • docker service ps: Muestra las tareas (contenedores) que se están ejecutando para un servicio, con información sobre en qué nodo están y su estado.

Con estos comandos, puedes gestionar aplicaciones distribuidas en múltiples nodos dentro de un clúster de Docker Swarm de manera eficiente.

  • Loading...
  • Convierte tu máquina Docker en un nodo principal (o manager) dentro de un clúster de Docker Swarm

    Loading...
  • Crea un servicio en Docker Swarm utilizando la imagen oficial de NGINX con 5 réplicas

    • Indica que quieres que el servicio ejecute 5 réplicas (contenedores)
    • El servicio se llama serverWeb
    • El puerto 4000 del host se mapea al puerto 80 del contenedor
    Loading...