Introdução
Neste laboratório, você aprenderá como usar o comando docker node inspect para visualizar informações detalhadas sobre os nós do Docker Swarm. Começaremos inspecionando um único nó usando seu ID, depois exploraremos como inspecionar o nó atual usando a palavra-chave 'self'. Finalmente, você aprenderá como formatar a saída para exibir informações específicas e como formatar os detalhes do nó para melhor legibilidade. Esta experiência prática irá equipá-lo com as habilidades para examinar e entender efetivamente a configuração e o status de seus nós do Docker Swarm.
Inspecionar um único nó
Nesta etapa, aprenderemos como inspecionar um único nó Docker. O comando docker node inspect fornece informações detalhadas sobre um nó específico em um Docker Swarm.
Primeiro, vamos verificar a versão do Docker instalada na VM do LabEx.
docker version
Você deve ver uma saída semelhante a esta, indicando que a versão do Docker é 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
Agora, vamos inicializar um Docker Swarm. Isso é necessário para ter nós para inspecionar.
docker swarm init
Você deve ver uma saída indicando que o swarm foi inicializado e fornecendo um token de entrada:
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.
A saída mostra que o nó atual agora é um manager. O xxxxxxxxxxxx é o ID do nó atual. Usaremos este ID para inspecionar o nó.
Agora, vamos inspecionar o nó atual usando seu ID. Substitua YOUR_NODE_ID pelo ID real do nó da saída docker swarm init.
docker node inspect YOUR_NODE_ID
Por exemplo, se o ID do seu nó fosse abcdef123456, o comando seria:
docker node inspect abcdef123456
Este comando irá gerar um grande objeto JSON contendo informações detalhadas sobre o nó, incluindo seu status, função, hostname e muito mais.
Inspecionar o nó atual usando 'self'
Na etapa anterior, inspecionamos um nó usando seu ID específico. O Docker Swarm fornece um alias conveniente, self, para se referir ao nó atual. Isso é útil quando você deseja inspecionar o nó em que está operando no momento, sem precisar saber seu ID.
Vamos usar o alias self para inspecionar o nó atual.
docker node inspect self
Este comando produzirá a mesma saída JSON detalhada que a inspeção do nó por seu ID. Usar self torna seus comandos mais portáteis e fáceis de usar, especialmente em scripts ou quando você não tem o ID do nó prontamente disponível.
A saída será um grande objeto JSON, semelhante ao que você viu na etapa anterior. Este JSON contém todas as informações de configuração e status para o nó atual.
Formatar a saída para mostrar informações específicas
Nas etapas anteriores, vimos que docker node inspect gera um grande objeto JSON. Frequentemente, você só precisa de partes específicas de informações dessa saída. O Docker fornece a flag --format para extrair e formatar dados específicos usando o pacote text/template do Go.
Vamos usar a flag --format para exibir apenas o hostname do nó atual. O hostname está localizado no caminho .Description.Hostname dentro da saída JSON.
docker node inspect --format '{{ .Description.Hostname }}' self
Este comando exibirá apenas o hostname do nó atual. A parte {{ .Description.Hostname }} é a sintaxe do template Go para acessar o campo Hostname dentro do objeto Description da saída JSON.
Agora, vamos tentar exibir o ID do nó e a disponibilidade do nó. O ID do nó está no caminho .ID, e a disponibilidade está no caminho .Spec.Availability. Podemos combinar vários campos na string de formatação.
docker node inspect --format 'ID: {{ .ID }}, Availability: {{ .Spec.Availability }}' self
Este comando exibirá o ID do nó e sua disponibilidade em um formato mais legível. Você pode usar esta técnica para extrair qualquer campo da saída JSON de docker node inspect.
Formatar a informação do nó de forma legível (Pretty-print)
Nas etapas anteriores, vimos a saída JSON bruta e como extrair campos específicos. Às vezes, você deseja uma saída mais legível por humanos e estruturada das informações do nó, sem ter que analisar o JSON bruto você mesmo. O comando docker node inspect fornece a flag --pretty para esse fim.
Vamos usar a flag --pretty para exibir as informações do nó em um formato mais legível.
docker node inspect --pretty self
Este comando exibirá um resumo formatado das informações do nó, incluindo seu ID, hostname, status, disponibilidade e função. Esta saída é muito mais fácil de ler e entender à primeira vista em comparação com o JSON bruto.
A saída será semelhante 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 saída formatada de forma legível é muito útil para verificar rapidamente o status e os detalhes principais de um nó em seu Docker Swarm.
Resumo
Neste laboratório, aprendemos como usar o comando docker node inspect para visualizar informações detalhadas sobre os nós do Docker Swarm. Começamos inspecionando um único nó usando seu ID após inicializar um Docker Swarm.
Em seguida, exploramos como inspecionar o nó atual usando o alias 'self'. Finalmente, aprendemos como formatar a saída para exibir informações específicas e como formatar os detalhes do nó de forma legível para melhor compreensão.



