Cómo usar el comando docker node inspect para ver detalles de los nodos

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 el comando docker node inspect para ver información detallada sobre los nodos de Docker Swarm. Comenzaremos inspeccionando un solo nodo utilizando su ID, luego exploraremos cómo inspeccionar el nodo actual utilizando la palabra clave 'self'. Finalmente, aprenderá cómo formatear la salida para mostrar información específica y cómo mostrar los detalles del nodo de manera legible. Esta experiencia práctica le proporcionará las habilidades necesarias para examinar y comprender de manera efectiva la configuración y el estado de sus nodos de Docker Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/inspect -.-> lab-555181{{"Cómo usar el comando docker node inspect para ver detalles de los nodos"}} docker/version -.-> lab-555181{{"Cómo usar el comando docker node inspect para ver detalles de los nodos"}} end

Inspeccionar un solo nodo

En este paso, aprenderemos cómo inspeccionar un solo nodo de Docker. El comando docker node inspect proporciona información detallada sobre un nodo específico en un clúster (swarm) de Docker.

Primero, veamos la versión de Docker instalada en la máquina virtual (VM) de LabEx.

docker version

Deberías ver una salida similar a esta, lo que indica que la versión de Docker es 20.10.21:

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        baedd2f
 Built:             Tue Oct 25 17:58:10 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.9
  Git commit:       305620d
  Built:            Tue Oct 25 17:56:04 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b35cd9b83c7c7b1200458f9f9f8d73288d61e58e
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Ahora, inicialicemos un clúster (swarm) de Docker. Esto es necesario para tener nodos que inspeccionar.

docker swarm init

Deberías ver una salida que indique que el clúster (swarm) se ha inicializado y que proporcione un token de unión:

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

La salida muestra que el nodo actual es ahora un administrador (manager). El xxxxxxxxxxxx es el ID del nodo actual. Usaremos este ID para inspeccionar el nodo.

Ahora, inspeccionemos el nodo actual utilizando su ID. Reemplace YOUR_NODE_ID con el ID real del nodo de la salida del comando docker swarm init.

docker node inspect YOUR_NODE_ID

Por ejemplo, si el ID de tu nodo fuera abcdef123456, el comando sería:

docker node inspect abcdef123456

Este comando generará un gran objeto JSON que contiene información detallada sobre el nodo, incluyendo su estado, rol, nombre de host y más.

Inspeccionar el nodo actual utilizando 'self'

En el paso anterior, inspeccionamos un nodo utilizando su ID específico. Docker Swarm proporciona un alias conveniente, self, para referirse al nodo actual. Esto es útil cuando se desea inspeccionar el nodo en el que se está operando actualmente sin necesidad de conocer su ID.

Utilicemos el alias self para inspeccionar el nodo actual.

docker node inspect self

Este comando producirá la misma salida JSON detallada que al inspeccionar el nodo por su ID. Utilizar self hace que sus comandos sean más portátiles y fáciles de usar, especialmente en scripts o cuando no se tiene el ID del nodo a mano.

La salida será un gran objeto JSON, similar a lo que vio en el paso anterior. Este JSON contiene toda la información de configuración y estado del nodo actual.

Formatear la salida para mostrar información específica

En los pasos anteriores, vimos que docker node inspect produce una gran salida en formato JSON. A menudo, solo se necesita información específica de esta salida. Docker proporciona la opción --format para extraer y formatear datos específicos utilizando el paquete text/template de Go.

Utilicemos la opción --format para mostrar solo el nombre de host (hostname) del nodo actual. El nombre de host se encuentra en la ruta .Description.Hostname dentro de la salida JSON.

docker node inspect --format '{{ .Description.Hostname }}' self

Este comando mostrará solo el nombre de host del nodo actual. La parte {{ .Description.Hostname }} es la sintaxis de plantillas de Go para acceder al campo Hostname dentro del objeto Description de la salida JSON.

Ahora, intentemos mostrar el ID del nodo y su disponibilidad. El ID del nodo se encuentra en la ruta .ID, y la disponibilidad se encuentra en la ruta .Spec.Availability. Podemos combinar múltiples campos en la cadena de formato.

docker node inspect --format 'ID: {{ .ID }}, Availability: {{ .Spec.Availability }}' self

Este comando mostrará el ID del nodo y su disponibilidad en un formato más legible. Puedes utilizar esta técnica para extraer cualquier campo de la salida JSON de docker node inspect.

Mostrar la información del nodo de forma legible

En los pasos anteriores, vimos la salida JSON sin formato y cómo extraer campos específicos. A veces, se desea una salida estructurada y más legible para humanos de la información del nodo sin tener que analizar el JSON sin formato manualmente. El comando docker node inspect proporciona la opción --pretty para este propósito.

Utilicemos la opción --pretty para mostrar la información del nodo en un formato más legible.

docker node inspect --pretty self

Este comando mostrará un resumen formateado de la información del nodo, incluyendo su ID, nombre de host (hostname), estado, disponibilidad y rol. Esta salida es mucho más fácil de leer y entender a simple vista en comparación con el JSON sin formato.

La salida se verá similar a esta:

ID:             abcdef123456
Hostname:       labex-vm
Status:         Ready
Availability:   Active
Manager Status:
  Address:      172.17.0.2:2377
  Reachability: Reachable
  Leader:       Yes
Platform:
  Architecture: x86_64
  OS:           linux
Resources:
  NanoCPUs:     2000000000
  MemoryBytes:  4177903616
Engine Version: 20.10.21

Esta salida formateada es muy útil para comprobar rápidamente el estado y los detalles clave de un nodo en su clúster Docker Swarm.

Resumen

En este laboratorio (lab), aprendimos cómo utilizar el comando docker node inspect para ver información detallada sobre los nodos de un clúster Docker Swarm. Comenzamos inspeccionando un solo nodo utilizando su ID después de inicializar un clúster Docker Swarm.

Luego, exploramos cómo inspeccionar el nodo actual utilizando el alias 'self'. Finalmente, aprendimos cómo formatear la salida para mostrar información específica y cómo mostrar los detalles del nodo de forma más legible.