Como usar o comando docker network inspect para visualizar detalhes da rede

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker network inspect para visualizar informações detalhadas sobre as redes Docker. Você começará criando uma rede Docker personalizada para trabalhar.

Após a criação da rede, você explorará diferentes maneiras de inspecionar sua configuração. Isso inclui o uso da saída JSON padrão, a aplicação de um template Go para uma saída personalizada e a utilização da opção verbose para obter detalhes mais extensos. Por fim, você aprenderá como inspecionar múltiplas redes simultaneamente.

Criar uma rede Docker personalizada

Nesta etapa, você aprenderá como criar uma rede personalizada no Docker. Por padrão, o Docker fornece vários drivers de rede, mas a criação de uma rede personalizada permite que você isole seus containers e controle como eles se comunicam entre si.

Antes de criar uma rede, vamos verificar as redes existentes em seu sistema usando o comando docker network ls.

docker network ls

Você deve ver algumas redes padrão como bridge, host e none.

Agora, vamos criar uma nova rede personalizada chamada my-custom-network usando o driver bridge. O driver bridge é o driver de rede padrão e é adequado para a maioria dos casos de uso.

docker network create my-custom-network

Após executar o comando, o Docker criará a rede e imprimirá seu ID.

Para verificar se a rede foi criada com sucesso, execute o comando docker network ls novamente.

docker network ls

Você agora deve ver my-custom-network listada entre as redes disponíveis.

Inspecionar a rede personalizada usando o formato JSON padrão

Nesta etapa, você aprenderá como inspecionar os detalhes de uma rede Docker usando o comando docker network inspect. Por padrão, este comando produz a configuração da rede em formato JSON, que fornece informações abrangentes sobre a rede, incluindo seu ID, nome, driver, subnet, gateway e containers conectados.

Para inspecionar a my-custom-network que você criou na etapa anterior, use o seguinte comando:

docker network inspect my-custom-network

Este comando produzirá um objeto JSON detalhado representando a configuração de my-custom-network. Você pode examinar esta saída para entender as propriedades da rede.

A saída incluirá campos como:

  • Name: O nome da rede (my-custom-network).
  • Id: O ID único da rede.
  • Driver: O driver de rede usado (bridge).
  • Scope: O escopo da rede (geralmente local).
  • IPAM: Informações sobre o Gerenciamento de Endereços IP, incluindo a subnet e o gateway.
  • Containers: Uma lista de containers conectados a esta rede (inicialmente vazia).

Compreender a saída de docker network inspect é crucial para depurar problemas de rede e entender como seus containers estão conectados.

Inspecionar a rede personalizada usando um template Go

Nesta etapa, você aprenderá como usar templates Go com o comando docker network inspect para extrair informações específicas da configuração da rede. Isso é útil quando você só precisa de certos detalhes e não quer analisar toda a saída JSON.

A flag -f ou --format permite que você especifique um template Go. O template usa a sintaxe do template Go para acessar campos dentro da saída JSON.

Digamos que você só queira ver o ID e o driver da rede. Você pode usar o seguinte template: {{.Id}} {{.Driver}}.

Execute o seguinte comando para inspecionar my-custom-network e formatar a saída usando este template:

docker network inspect -f '{{.Id}} {{.Driver}}' my-custom-network

A saída será o ID da rede seguido pelo nome do driver, separados por um espaço.

Você também pode acessar campos aninhados. Por exemplo, para obter a subnet da configuração IPAM, você pode usar o template {{.IPAM.Config}}. Como IPAM.Config é uma lista, você pode precisar iterar por ela ou acessar um elemento específico se houver múltiplas configurações. Para simplificar, vamos assumir que há apenas uma configuração e acessar o campo Subnet dentro do primeiro elemento da lista Config: {{(index .IPAM.Config 0).Subnet}}.

Vamos tentar inspecionar a rede e exibir o nome da rede e a subnet:

docker network inspect -f 'Name: {{.Name}}, Subnet: {{(index .IPAM.Config 0).Subnet}}' my-custom-network

Este comando produzirá o nome da rede e sua subnet em um formato mais legível.

Usar templates Go fornece uma maneira poderosa de personalizar a saída dos comandos Docker e extrair exatamente as informações que você precisa.

Inspecionar a rede personalizada com saída verbose

Nesta etapa, você aprenderá como obter informações mais detalhadas ao inspecionar uma rede Docker usando a flag --verbose ou -v. Esta flag fornece detalhes adicionais que não estão incluídos na saída padrão, o que pode ser útil para depuração avançada e compreensão do estado interno da rede.

Para inspecionar my-custom-network com saída verbose, use o seguinte comando:

docker network inspect -v my-custom-network

A saída será semelhante à saída JSON padrão, mas incluirá campos e detalhes extras. As informações adicionais exatas podem variar dependendo do driver de rede e da versão do Docker, mas geralmente incluem mais detalhes de baixo nível sobre a configuração e o estado da rede.

Por exemplo, com o driver bridge, a saída verbose pode incluir detalhes sobre a interface bridge subjacente no sistema host, incluindo seu endereço MAC e endereço IP. Também pode mostrar informações mais detalhadas sobre a configuração IPAM.

Embora a saída padrão seja geralmente suficiente para a maioria dos propósitos, a saída verbose pode ser inestimável quando você precisa se aprofundar na configuração da rede ou solucionar problemas complexos de rede.

Compare a saída deste comando com a saída da etapa anterior para ver as informações adicionais fornecidas pela flag verbose.

Inspecionar múltiplas redes

Nesta etapa, você aprenderá como inspecionar múltiplas redes Docker simultaneamente usando o comando docker network inspect. Isso pode ser útil quando você precisa comparar as configurações de diferentes redes ou obter informações sobre várias redes de uma só vez.

Para inspecionar múltiplas redes, basta fornecer os nomes ou IDs das redes como argumentos para o comando docker network inspect, separados por espaços.

Vamos inspecionar a my-custom-network que você criou e a rede bridge padrão.

docker network inspect my-custom-network bridge

Este comando exibirá a configuração JSON para ambas as redes my-custom-network e bridge. A saída para cada rede será um objeto JSON separado.

Você também pode combinar a inspeção de múltiplas redes com as opções de formatação que você aprendeu nas etapas anteriores. Por exemplo, para obter o nome e o driver de ambas as redes usando um template Go:

docker network inspect -f 'Name: {{.Name}}, Driver: {{.Driver}}' my-custom-network bridge

Isso exibirá o nome e o driver para cada rede especificada em uma linha separada.

Inspecionar múltiplas redes de uma só vez pode simplificar significativamente seu fluxo de trabalho ao gerenciar várias redes em seu ambiente Docker.

Resumo

Neste laboratório, você aprendeu como criar uma rede Docker personalizada usando o comando docker network create e verificar sua criação com docker network ls. Em seguida, você explorou o comando docker network inspect para visualizar configurações detalhadas da rede.

Você praticou a inspeção de uma rede usando a saída JSON padrão, utilizando um template Go para saída personalizada e obtendo informações verbosas. Por fim, você aprendeu como inspecionar múltiplas redes simultaneamente.