Cómo usar el comando docker service ls para listar 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 utilizar de manera efectiva el comando docker service ls para gestionar e inspeccionar los servicios que se ejecutan en un clúster de Docker Swarm. Comenzará listando todos los servicios en su clúster, asegurándose de tener una comprensión básica de la salida del comando y de la información que proporciona.

A partir de la lista básica, luego explorará opciones de filtrado potentes. Esto incluye filtrar servicios por su nombre, lo que le permitirá encontrar rápidamente servicios específicos. También aprenderá cómo filtrar por modo de servicio (por ejemplo, replicado o global) y por etiquetas (labels), que son pares clave-valor utilizados para organizar e identificar servicios. Finalmente, descubrirá cómo formatear la salida del comando docker service ls para mostrar la información de la manera que mejor se adapte a sus necesidades, lo que facilitará el análisis y la comprensión de los detalles de los servicios.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") subgraph Lab Skills docker/ls -.-> lab-555227{{"Cómo usar el comando docker service ls para listar servicios"}} docker/pull -.-> lab-555227{{"Cómo usar el comando docker service ls para listar servicios"}} docker/info -.-> lab-555227{{"Cómo usar el comando docker service ls para listar servicios"}} end

Listar todos los servicios en el clúster

En este paso, aprenderá cómo listar todos los servicios que se ejecutan en un clúster de Docker Swarm. Antes de listar los servicios, debe tener un clúster de Docker Swarm inicializado y al menos un servicio en ejecución.

Primero, inicialicemos un clúster de Docker Swarm si aún no está inicializado. Puede verificar el estado del clúster utilizando el comando docker info. Si la salida incluye "Swarm: active", el clúster ya está inicializado. De lo contrario, debe inicializarlo.

docker info

Si el clúster no está activo, initíelo:

docker swarm init

Ahora, creemos un servicio simple para listar. Crearemos un servicio llamado my-web-service utilizando la imagen nginx. Dado que estamos utilizando un entorno nuevo, primero debemos descargar la imagen nginx.

docker pull nginx

Ahora, creemos el servicio:

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

Este comando crea un servicio llamado my-web-service a partir de la imagen nginx y publica el puerto 80 del contenedor en el puerto 80 del host.

Para listar todos los servicios en el clúster, utilice el comando docker service ls. Este comando muestra información sobre los servicios, incluyendo su ID, nombre, modo, réplicas y la imagen que están utilizando.

docker service ls

La salida mostrará el my-web-service que acaba de crear. Debería ver su ID, nombre, modo (replicado), el número de réplicas (por lo general 1 por defecto) y la imagen (nginx).

Filtrar servicios por nombre

En este paso, aprenderá cómo filtrar la lista de servicios por su nombre utilizando el comando docker service ls con la opción --filter. Esto es útil cuando tiene muchos servicios en ejecución y solo desea ver información sobre un servicio específico o un grupo de servicios con nombres similares.

La sintaxis básica para filtrar por nombre es docker service ls --filter name=<service_name>. Puede proporcionar el nombre completo del servicio o una parte del nombre.

En el paso anterior, creamos un servicio llamado my-web-service. Usemos el filtro para mostrar solo este servicio.

docker service ls --filter name=my-web-service

La salida solo debe mostrar la línea correspondiente al my-web-service.

También puede usar nombres parciales para filtrar. Por ejemplo, si tuviera servicios llamados my-web-service-1 y my-web-service-2, filtrar por name=my-web mostraría ambos. En nuestra configuración actual, filtrar por name=my-web seguirá mostrando my-web-service.

docker service ls --filter name=my-web

Este comando demuestra cómo usar un nombre parcial para filtrar. La salida aún debe listar my-web-service.

Filtrar por nombre es una forma rápida de reducir la lista de servicios y encontrar la información que necesita sobre un servicio específico sin tener que revisar toda la lista.

Filtrar servicios por modo

En este paso, aprenderá cómo filtrar la lista de servicios según su modo utilizando el comando docker service ls con la opción --filter. Los servicios de Docker Swarm pueden ejecutarse en dos modos: replicated (replicado) y global (global).

  • Replicado: Este es el modo predeterminado. El gestor del clúster programa un número especificado de réplicas de la tarea del servicio en los nodos disponibles.
  • Global: El clúster ejecuta una tarea para el servicio en cada nodo disponible.

La sintaxis básica para filtrar por modo es docker service ls --filter mode=<mode>. Puede usar replicated o global como modo.

En los pasos anteriores, creamos un servicio llamado my-web-service que se ejecuta en modo replicated por defecto. Filtrémos los servicios para mostrar solo aquellos que se ejecutan en modo replicated.

docker service ls --filter mode=replicated

La salida debe mostrar my-web-service porque es un servicio replicado.

Ahora, intentemos filtrar los servicios en modo global. Dado que no hemos creado ningún servicio global, este comando no debe mostrar ningún servicio.

docker service ls --filter mode=global

La salida de este comando solo debe mostrar la fila de encabezado y ninguna entrada de servicio, ya que no hay servicios globales en ejecución.

Filtrar por modo es útil cuando solo desea ver servicios de un tipo específico, por ejemplo, para verificar el estado de todos sus servicios globales que están destinados a ejecutarse en cada nodo.

Filtrar servicios por etiqueta

En este paso, aprenderá cómo filtrar la lista de servicios basándose en etiquetas (labels) utilizando el comando docker service ls con la opción --filter. Las etiquetas son pares clave-valor que se pueden adjuntar a objetos de Docker, incluyendo servicios, para ayudar a organizarlos e identificarlos.

La sintaxis básica para filtrar por etiqueta es docker service ls --filter label=<key>=<value>. Puede filtrar por una clave y valor de etiqueta específicos, o simplemente por la presencia de una clave de etiqueta.

Primero, actualicemos nuestro servicio existente my-web-service para agregar una etiqueta. Agregaremos la etiqueta environment=development al servicio.

docker service update --label-add environment=development my-web-service

Este comando actualiza el my-web-service y agrega la etiqueta especificada.

Ahora, filtremos los servicios para mostrar solo aquellos con la etiqueta environment=development.

docker service ls --filter label=environment=development

La salida debe mostrar my-web-service porque acabamos de agregarle esta etiqueta.

También puede filtrar solo por la presencia de una clave de etiqueta, independientemente de su valor. Por ejemplo, para listar todos los servicios que tienen la etiqueta environment:

docker service ls --filter label=environment

Este comando listará todos los servicios que tienen la etiqueta environment, independientemente de su valor. En nuestro caso, seguirá mostrando my-web-service.

Filtrar por etiquetas es una forma poderosa de administrar y consultar servicios, especialmente en clústeres más grandes donde se pueden utilizar etiquetas para categorizar servicios por entorno, equipo o aplicación.

Formatear la salida de la lista de servicios

En este paso, aprenderá cómo formatear la salida del comando docker service ls utilizando la opción --format. Esto le permite personalizar la información mostrada y el formato en el que se presenta, lo cual es especialmente útil para scripting o generar informes.

La opción --format utiliza el paquete text/template de Go. Puede especificar los campos que desea mostrar y cómo deben formatearse. Los campos comunes para los servicios incluyen .ID, .Name, .Mode, .Replicas y .Image.

Comencemos mostrando solo el ID y el nombre del servicio, separados por una tabulación.

docker service ls --format "{{.ID}}\t{{.Name}}"

La salida mostrará el ID y el nombre de my-web-service, separados por un carácter de tabulación.

Ahora, mostremos el nombre del servicio, la imagen y el modo en un formato más legible, quizás como una tabla sin el encabezado predeterminado.

docker service ls --format "table {{.Name}}\t{{.Image}}\t{{.Mode}}"

Utilizar table al principio de la cadena de formato le indica a Docker que formatee la salida como una tabla. Los campos están separados por tabulaciones (\t).

También puede utilizar el formato JSON, que es muy útil para el procesamiento programático.

docker service ls --format json

Este comando mostrará la información del servicio en formato JSON.

Formatear la salida le brinda flexibilidad en cómo ve y utiliza la información de los servicios. Puede seleccionar campos específicos, cambiar los separadores y mostrar la salida en diferentes formatos como tabla o JSON.

Resumen

En este laboratorio, aprendiste cómo utilizar el comando docker service ls para listar los servicios que se ejecutan en un clúster de Docker Swarm. Comenzaste asegurándote de que un clúster de Docker Swarm estuviera inicializado y creando un servicio de muestra. Luego, utilizaste docker service ls para ver todos los servicios en ejecución, comprendiendo la salida básica, que incluye el ID del servicio, el nombre, el modo, las réplicas y la imagen.

Además, exploraste cómo filtrar la lista de servicios utilizando la opción --filter. Aprendiste a filtrar servicios específicamente por su nombre, lo cual es esencial para administrar una gran cantidad de servicios y centrarse en la información relevante.