Cómo usar el comando docker node ls para listar nodos de un swarm

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 node ls para gestionar e inspeccionar nodos dentro de un Docker Swarm. Comenzaremos inicializando un Docker Swarm y listando todos los nodos.

Posteriormente, explorará varias opciones de filtrado para reducir la lista de nodos en función de criterios como el ID del nodo, el rol (manager o worker) y las etiquetas personalizadas de los nodos. Finalmente, aprenderá cómo formatear la salida para mostrar solo la información específica que necesita, lo que mejorará su capacidad para recuperar rápidamente los detalles relevantes de los nodos.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/ls -.-> lab-555182{{"Cómo usar el comando docker node ls para listar nodos de un swarm"}} docker/ps -.-> lab-555182{{"Cómo usar el comando docker node ls para listar nodos de un swarm"}} docker/inspect -.-> lab-555182{{"Cómo usar el comando docker node ls para listar nodos de un swarm"}} end

Listar todos los nodos en el swarm

En este paso, aprenderemos cómo listar todos los nodos en un Docker Swarm. Antes de poder listar los nodos, necesitamos inicializar un Docker Swarm.

Primero, inicialicemos el swarm en la máquina actual. Esta máquina se convertirá en el nodo manager.

docker swarm init

Debería ver una salida que indique que el swarm se ha inicializado y que proporcione un comando para unir otros nodos al swarm.

Ahora que el swarm está inicializado, podemos listar los nodos en el swarm utilizando el comando docker node ls.

docker node ls

Este comando mostrará una tabla con información sobre los nodos en el swarm, incluyendo su ID, nombre de host, estado, disponibilidad, estado del manager y versión del motor. Dado que solo tenemos un nodo (el nodo manager que acabamos de inicializar), verá una única entrada en la lista.

La salida se verá similar a esto:

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
<node_id> *                   <hostname>          Ready     Active         Leader           20.10.21

El * junto al ID indica que este es el nodo actual en el que está ejecutando el comando. La columna MANAGER STATUS muestra que este nodo es el Leader del swarm.

Filtrar nodos por ID

En este paso, aprenderemos cómo filtrar la lista de nodos en un Docker Swarm en función de su ID. Esto es útil cuando tienes muchos nodos y deseas ver información sobre uno específico.

Primero, listemos todos los nodos nuevamente para obtener el ID del nodo manager.

docker node ls

Identifica el ID del nodo a partir de la salida. Será una larga cadena de caracteres.

Ahora, podemos usar la bandera --filter con la clave id para filtrar la salida y mostrar solo el nodo con el ID especificado. Reemplaza <node_id> con el ID real que obtuviste del comando anterior.

docker node ls --filter id=<node_id>

Este comando mostrará solo la fila correspondiente al nodo con el ID dado. Esta es una forma sencilla de encontrar rápidamente información sobre un nodo específico cuando conoces su ID.

Por ejemplo, si el ID de tu nodo es 24ifihg345h345h345h345h34, el comando sería:

docker node ls --filter id=24ifihg345h345h345h345h34

La salida será la misma que la línea única de tu nodo manager del comando docker node ls en el paso anterior.

Filtrar nodos por rol

En este paso, aprenderemos cómo filtrar la lista de nodos en un Docker Swarm en función de su rol. En un Docker Swarm, los nodos pueden tener uno de dos roles: manager o worker. Los nodos manager administran el swarm, mientras que los nodos worker ejecutan los servicios.

Dado que actualmente solo tenemos un nodo en nuestro swarm y es el nodo manager, filtremos para mostrar solo los nodos manager. Usamos la bandera --filter con la clave role y el valor manager.

docker node ls --filter role=manager

Este comando mostrará solo los nodos que tienen el rol de manager. En nuestra configuración actual, esto mostrará el mismo nodo único que antes.

Si tuvieras nodos worker en tu swarm, podrías filtrar para mostrar solo los nodos worker utilizando:

docker node ls --filter role=worker

Actualmente, este comando no mostrará ninguna salida porque no hay nodos worker en el swarm.

Comprender cómo filtrar por rol es importante para administrar swarms más grandes con múltiples nodos manager y worker.

Filtrar nodos por etiqueta de nodo

En este paso, aprenderemos cómo filtrar nodos en función de las etiquetas (labels) asignadas a ellos. Las etiquetas de nodo son pares clave-valor que se pueden adjuntar a los nodos con fines organizativos o para controlar la ubicación de los servicios.

Primero, agreguemos una etiqueta a nuestro nodo manager. Agregaremos la etiqueta location=datacenter1. Para hacer esto, usamos el comando docker node update seguido del ID del nodo y la bandera --label-add.

Obtengamos nuevamente el ID del nodo usando docker node ls -q:

NODE_ID=$(docker node ls -q)
echo $NODE_ID

Ahora, actualicemos el nodo con la etiqueta:

docker node update --label-add location=datacenter1 $NODE_ID

Deberías ver una salida que confirme la actualización del nodo.

Para verificar que se ha agregado la etiqueta, puedes inspeccionar el nodo:

docker node inspect $NODE_ID

Busca la sección Labels en la salida. Deberías ver "location": "datacenter1".

Ahora, filtremos los nodos en función de esta etiqueta. Usamos la bandera --filter con la clave label y la etiqueta en el formato clave=valor.

docker node ls --filter label=location=datacenter1

Este comando mostrará solo los nodos que tienen la etiqueta location con el valor datacenter1. En nuestro caso, mostrará nuestro nodo manager.

También puedes filtrar los nodos que tienen una clave de etiqueta específica, independientemente de su valor, simplemente proporcionando la clave:

docker node ls --filter label=location

Esto mostrará todos los nodos que tienen la etiqueta location definida.

Formatear la salida para mostrar información específica

En este paso, aprenderemos cómo formatear la salida del comando docker node ls para mostrar solo la información en la que estamos interesados. Esto es útil para scripting o cuando solo necesitas una vista rápida de detalles específicos.

Usamos la bandera --format para especificar el formato de salida. Puedes usar la sintaxis de plantillas de Go para definir la salida deseada. Campos comunes a los que puedes acceder incluyen .ID, .Hostname, .Status, .Availability, .ManagerStatus y .EngineVersion.

Mostremos solo el ID del nodo y el nombre de host.

docker node ls --format "{{.ID}}\t{{.Hostname}}"

{{.ID}} y {{.Hostname}} son marcadores de posición para el ID y el nombre de host del nodo, respectivamente. \t inserta un carácter de tabulación para la separación.

La salida se verá así:

<node_id>	<hostname>

Ahora, mostremos el nombre de host y el estado del manager.

docker node ls --format "Hostname: {{.Hostname}}, Manager Status: {{.ManagerStatus}}"

Esto generará la siguiente salida:

Hostname: <hostname>, Manager Status: Leader

Puedes combinar filtrado y formato. Por ejemplo, filtremos los nodos manager y mostremos su ID y nombre de host.

docker node ls --filter role=manager --format "{{.ID}}\t{{.Hostname}}"

Este comando primero filtra los nodos para incluir solo los managers y luego formatea la salida para mostrar su ID y nombre de host.

Usar la bandera --format brinda flexibilidad en cómo se visualiza y procesa la información sobre los nodos de tu Docker Swarm.

Resumen

En este laboratorio, aprendimos cómo usar el comando docker node ls para administrar y ver información sobre los nodos en un Docker Swarm. Comenzamos inicializando un Docker Swarm en la máquina actual, convirtiéndola en el nodo manager. Luego, usamos docker node ls para listar todos los nodos en el swarm, observando la salida predeterminada que incluye el ID, el nombre de host, el estado, la disponibilidad, el estado del manager y la versión del motor.

Luego exploramos cómo filtrar la lista de nodos usando la bandera --filter. En particular, aprendimos cómo filtrar nodos en función de su ID único, lo que nos permite localizar y ver información rápidamente sobre un nodo específico dentro de un swarm más grande. El laboratorio también cubre el filtrado por rol y etiqueta de nodo, y el formato de la salida para mostrar solo información específica, aunque el contenido proporcionado solo detalla el filtrado por ID.