Cómo usar el comando docker service scale para escalar servicios

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo gestionar de manera efectiva el número de instancias en ejecución (réplicas) de sus servicios dentro de un Docker Swarm. Comenzaremos creando un servicio replicado, estableciendo una base con múltiples copias en ejecución.

Después de la creación, explorará cómo ajustar dinámicamente la escala del servicio. Esto incluye escalar un solo servicio hacia arriba para manejar una demanda creciente, escalarlo hacia abajo, incluso hasta cero réplicas, y finalmente, escalar múltiples servicios simultáneamente para gestionar implementaciones complejas. A través de comandos prácticos, adquirirá experiencia práctica en el uso del comando docker service scale para lograr alta disponibilidad y optimización de recursos para sus aplicaciones contenerizadas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ls -.-> lab-555231{{"Cómo usar el comando docker service scale para escalar servicios"}} docker/ps -.-> lab-555231{{"Cómo usar el comando docker service scale para escalar servicios"}} docker/rm -.-> lab-555231{{"Cómo usar el comando docker service scale para escalar servicios"}} docker/inspect -.-> lab-555231{{"Cómo usar el comando docker service scale para escalar servicios"}} docker/pull -.-> lab-555231{{"Cómo usar el comando docker service scale para escalar servicios"}} end

Crear un servicio replicado

En este paso, aprenderemos cómo crear un servicio replicado utilizando Docker. Un servicio replicado significa que múltiples copias idénticas (réplicas) de tu servicio se están ejecutando simultáneamente. Esto proporciona alta disponibilidad y te permite manejar más tráfico.

Primero, vamos a descargar la imagen de Docker necesaria. Utilizaremos la imagen alpine para este ejemplo.

docker pull alpine

Deberías ver una salida que indique que la imagen se está descargando.

Ahora, vamos a crear un servicio replicado llamado my-alpine-service con 3 réplicas. Utilizaremos la imagen alpine y el comando ping localhost. Este comando se ejecutará dentro de cada contenedor y enviará continuamente ping al localhost.

docker service create --name my-alpine-service --replicas 3 alpine ping localhost

Después de ejecutar este comando, Docker Swarm creará el servicio y iniciará el número especificado de réplicas. Deberías ver una salida que confirme la creación del servicio.

Para verificar que el servicio se ha creado y las réplicas se están ejecutando, puedes listar los servicios.

docker service ls

Deberías ver my-alpine-service en la lista con 3 réplicas.

También puedes inspeccionar el servicio para obtener más detalles.

docker service inspect my-alpine-service

Este comando mostrará un gran objeto JSON que contiene información detallada sobre el servicio, incluyendo el número de réplicas.

Finalmente, vamos a comprobar las tareas asociadas al servicio para ver los contenedores individuales en ejecución.

docker service ps my-alpine-service

Este comando mostrará el estado de cada réplica (tarea) del servicio. Deberías ver 3 tareas en la lista, cada una en estado de ejecución.

Escalar un solo servicio hacia arriba

En este paso, aprenderemos cómo escalar un solo servicio hacia arriba. Escalar hacia arriba significa aumentar el número de réplicas de un servicio. Esto es útil cuando necesitas manejar una carga o tráfico creciente.

En el paso anterior, creamos un servicio llamado my-alpine-service con 3 réplicas. Ahora, vamos a escalar este servicio hasta 5 réplicas. Podemos usar el comando docker service scale para esto.

docker service scale my-alpine-service=5

Después de ejecutar este comando, Docker Swarm agregará 2 nuevas réplicas al servicio. Deberías ver una salida que indique que el servicio se está actualizando.

Para verificar que el servicio se ha escalado hacia arriba, puedes listar los servicios nuevamente.

docker service ls

Ahora deberías ver my-alpine-service en la lista con 5 réplicas.

También puedes comprobar las tareas asociadas al servicio para ver los contenedores recién creados.

docker service ps my-alpine-service

Este comando mostrará el estado de las 5 réplicas (tareas) del servicio. Deberías ver 5 tareas en la lista, con las nuevas transicionando a un estado de ejecución.

Escalar un solo servicio hacia abajo hasta cero

En este paso, aprenderemos cómo escalar un solo servicio hacia abajo hasta cero réplicas. Escalar hacia abajo hasta cero detiene efectivamente todas las instancias del servicio. Esto puede ser útil para apagar temporalmente un servicio sin eliminar su configuración.

En el paso anterior, escalamos el servicio my-alpine-service a 5 réplicas. Ahora, vamos a escalar este servicio hacia abajo hasta 0 réplicas. Volveremos a utilizar el comando docker service scale.

docker service scale my-alpine-service=0

Después de ejecutar este comando, Docker Swarm detendrá y eliminará todas las réplicas en ejecución del servicio. Deberías ver una salida que indique que el servicio se está actualizando.

Para verificar que el servicio se ha escalado hacia abajo hasta cero, puedes listar los servicios.

docker service ls

Ahora deberías ver my-alpine-service en la lista con 0 réplicas.

También puedes comprobar las tareas asociadas al servicio.

docker service ps my-alpine-service

Este comando mostrará el estado de las tareas. Dado que hemos escalado hacia abajo hasta cero, no debería haber tareas en ejecución en la lista. Puedes ver tareas en estado "Shutdown", lo que indica que se detuvieron.

Escalar múltiples servicios

En este paso, aprenderemos cómo escalar múltiples servicios simultáneamente. Esto es útil cuando tienes varios servicios que necesitan ser escalados juntos, por ejemplo, diferentes componentes de una aplicación.

Primero, creemos otro servicio. Crearemos un servicio llamado my-nginx-service utilizando la imagen nginx con 1 réplica. Primero necesitamos descargar la imagen nginx.

docker pull nginx

Deberías ver una salida que indique que se está descargando la imagen nginx.

Ahora, creemos el servicio my-nginx-service.

docker service create --name my-nginx-service --replicas 1 nginx

Deberías ver una salida que confirme la creación del servicio my-nginx-service.

Ahora tenemos dos servicios: my-alpine-service (actualmente escalado a 0) y my-nginx-service (escalado a 1). Escalemos ambos servicios a la vez. Escalaremos my-alpine-service a 2 réplicas y my-nginx-service a 3 réplicas.

docker service scale my-alpine-service=2 my-nginx-service=3

Después de ejecutar este comando, Docker Swarm actualizará ambos servicios de acuerdo con la cantidad de réplicas especificadas. Deberías ver una salida que indique que ambos servicios se están actualizando.

Para verificar que ambos servicios se han escalado, puedes listar los servicios.

docker service ls

Ahora deberías ver my-alpine-service en la lista con 2 réplicas y my-nginx-service en la lista con 3 réplicas.

También puedes comprobar las tareas de cada servicio individualmente para ver los contenedores en ejecución.

docker service ps my-alpine-service

Esto mostrará las 2 tareas en ejecución para my-alpine-service.

docker service ps my-nginx-service

Esto mostrará las 3 tareas en ejecución para my-nginx-service.

Finalmente, limpiemos los servicios que creamos. Podemos eliminar ambos servicios utilizando el comando docker service rm.

docker service rm my-alpine-service my-nginx-service

Deberías ver una salida que confirme la eliminación de ambos servicios.

Para verificar que los servicios se han eliminado, lista los servicios nuevamente.

docker service ls

No debería haber servicios en la lista.

Resumen

En este laboratorio, aprendimos cómo gestionar el escalado de servicios de Docker. Comenzamos creando un servicio replicado con un número específico de réplicas, lo que demostró la implementación inicial de una aplicación tolerante a fallos. Luego exploramos cómo ajustar dinámicamente el número de instancias en ejecución de un solo servicio, primero escalándolo hacia arriba para manejar una mayor demanda y luego escalándolo hacia abajo, incluyendo la reducción de las réplicas a cero para detener efectivamente el servicio.

Finalmente, aprendimos cómo escalar múltiples servicios simultáneamente, mostrando la capacidad de gestionar la asignación de recursos de varias aplicaciones dentro de un entorno Docker Swarm con un solo comando. Estos pasos brindaron experiencia práctica en el uso del comando docker service scale para gestionar de manera eficiente el ciclo de vida y la utilización de recursos de los servicios.