Como usar o comando docker inspect para obter informações detalhadas

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar efetivamente o comando docker inspect para recuperar informações detalhadas sobre objetos Docker, com foco específico em containers. Você começará inspecionando um container e compreendendo a saída JSON padrão abrangente fornecida pelo comando.

A partir disso, você explorará como formatar a saída usando Go templating para extrair pontos de dados específicos, como o endereço IP de um container. O laboratório também cobrirá como inspecionar o tamanho de um container e demonstrará como inspecionar diferentes tipos de objetos Docker além de apenas containers.

Inspecionar um container e entender a saída padrão

Nesta etapa, você aprenderá como inspecionar um container Docker e entender a saída padrão. O comando docker inspect fornece informações detalhadas sobre objetos Docker, incluindo containers, imagens, redes e volumes. Por padrão, ele retorna um array JSON contendo detalhes de configuração, estado e outros metadados.

Primeiramente, vamos baixar uma imagem simples para trabalhar. Usaremos a imagem hello-world.

docker pull hello-world

Você deve ver uma saída indicando que a imagem está sendo baixada e extraída.

Agora, vamos executar um container a partir desta imagem.

docker run hello-world

Este comando executa o container hello-world, que imprime uma mensagem e depois sai.

Para inspecionar o container que acabou de ser executado, você precisa de seu ID ou nome. Você pode encontrar o ID do último container que saiu usando docker ps -a.

docker ps -a

Procure o container com a imagem hello-world e copie seu CONTAINER ID.

Agora, use o comando docker inspect seguido pelo ID do container que você acabou de copiar. Substitua <container_id> pelo ID real.

docker inspect <container_id>

Este comando exibirá um grande documento JSON contendo informações detalhadas sobre o container. Esta saída padrão inclui uma ampla gama de dados, como o estado do container, configuração, configurações de rede e volumes montados. Compreender esta saída é crucial para depurar e gerenciar containers.

Role pela saída para ter uma ideia das informações disponíveis. Você verá campos como Id, State, Created, Path, Args, Config, NetworkSettings e muitos mais.

Formatar a saída para obter informações específicas

Na etapa anterior, você viu que docker inspect fornece uma grande quantidade de informações em formato JSON. Frequentemente, você precisa apenas de pedaços específicos de informação. O Docker permite que você formate a saída usando a flag --format e Go templating.

Vamos obter o endereço IP de um container em execução. Primeiro, precisamos de um container em execução. Usaremos um container nginx simples para isso.

Baixe a imagem nginx:

docker pull nginx

Execute um container nginx em modo detached (-d) para que ele seja executado em segundo plano:

docker run -d nginx

Este comando exibirá o ID do container. Copie este ID.

Agora, vamos usar docker inspect com a flag --format para obter o endereço IP do container. Substitua <container_id> pelo ID do seu container nginx em execução.

docker inspect --format='{{.NetworkSettings.IPAddress}}' <container_id>

A flag --format usa a sintaxe Go templating. . se refere ao objeto JSON de nível superior. Navegamos pela estrutura JSON usando a notação de ponto: .NetworkSettings acessa o objeto NetworkSettings e .IPAddress acessa o campo IPAddress dentro de NetworkSettings. As chaves duplas {{ }} indicam uma ação de template Go.

Você deve ver o endereço IP do container impresso no console.

Você pode extrair outras informações de forma semelhante. Por exemplo, para obter o estado do container:

docker inspect --format='{{.State.Status}}' <container_id>

Isso exibirá o status atual do container (por exemplo, "running").

Para obter o nome do container:

docker inspect --format='{{.Name}}' <container_id>

Isso exibirá o nome do container (por exemplo, /vigilant_goldberg).

Você também pode combinar vários campos na string de formatação. Por exemplo, para obter o ID do container e seu status:

docker inspect --format='ID: {{.Id}}, Status: {{.State.Status}}' <container_id>

Isso imprimirá o ID e o status em um formato mais legível.

Experimente com diferentes campos da saída JSON que você viu na etapa anterior para extrair as informações que você precisa.

Inspecionar o tamanho de um container Docker

Nesta etapa, você aprenderá como inspecionar o tamanho de um container Docker. Entender o tamanho do container é importante para gerenciar o espaço em disco e otimizar as construções de imagens.

O comando docker inspect pode fornecer informações sobre o tamanho do container, mas uma maneira mais direta de ver o tamanho dos containers em execução é usando o comando docker ps com a flag --size.

Primeiro, certifique-se de ter um container em execução. Se o seu container nginx da etapa anterior ainda estiver em execução, você pode usá-lo. Caso contrário, execute-o novamente:

docker run -d nginx

Agora, liste os containers em execução e inclua suas informações de tamanho:

docker ps --size

Você verá uma coluna adicional rotulada como SIZE. Esta coluna mostra dois valores: o tamanho virtual e o tamanho em disco.

  • Virtual Size (Tamanho Virtual): Este é o tamanho total das camadas da imagem do container mais o tamanho da camada gravável do container.
  • Size (Tamanho): Este é o tamanho da camada gravável do container em disco. Esta camada contém todas as alterações feitas no sistema de arquivos do container desde que ele foi iniciado.

Para containers que foram finalizados, você pode usar docker ps -a --size para ver seus tamanhos.

docker ps -a --size

Você também pode obter informações de tamanho usando docker inspect e formatando a saída. As informações de tamanho estão disponíveis em .SizeRw (tamanho da camada gravável) e .SizeRootFs (tamanho total, incluindo as camadas da imagem).

Substitua <container_id> pelo ID de um dos seus containers:

docker inspect --format='Writable Layer Size: {{.SizeRw}}, Total Size: {{.SizeRootFs}}' <container_id>

Este comando exibirá o tamanho da camada gravável e o tamanho total do sistema de arquivos raiz do container.

Compreender a diferença entre o tamanho virtual e o tamanho em disco é importante. O tamanho virtual inclui as camadas de imagem compartilhadas, enquanto o tamanho em disco para um container em execução reflete principalmente os dados exclusivos gravados na camada gravável desse container específico.

Inspecionar um tipo específico de objeto Docker

Nas etapas anteriores, você usou docker inspect em containers. No entanto, docker inspect é um comando versátil que pode ser usado para inspecionar vários objetos Docker, incluindo imagens, redes e volumes.

Para inspecionar um objeto diferente de um container, você precisa especificar o tipo de objeto antes do nome ou ID do objeto. A sintaxe é docker inspect <object_type> <object_name_or_id>.

Vamos inspecionar a imagem nginx que você baixou anteriormente.

Primeiro, liste suas imagens para obter o ID ou nome da imagem:

docker images

Encontre a imagem nginx e anote seu REPOSITORY, TAG ou IMAGE ID.

Agora, inspecione a imagem nginx. Você pode usar o nome e a tag da imagem (por exemplo, nginx:latest) ou o ID da imagem. Substitua <image_name_or_id> pelo valor apropriado.

docker inspect image <image_name_or_id>

Isso exibirá informações detalhadas sobre a imagem nginx, incluindo suas camadas, configuração e metadados. Observe que a estrutura da saída é diferente da inspeção de um container, pois reflete as propriedades de uma imagem.

Em seguida, vamos inspecionar uma rede Docker. O Docker cria redes padrão. Você pode listá-las usando docker network ls.

docker network ls

Você provavelmente verá redes como bridge, host e none. Vamos inspecionar a rede bridge.

docker inspect network bridge

Este comando mostrará detalhes sobre a rede bridge, incluindo sua configuração, containers conectados e informações de endereçamento IP.

Finalmente, vamos inspecionar um volume Docker. Se você não tiver nenhum volume, pode criar um.

docker volume create myvolume

Agora, inspecione o volume que você acabou de criar.

docker inspect volume myvolume

Isso exibirá informações sobre o myvolume, como seu driver, ponto de montagem e escopo.

Ao especificar o tipo de objeto (container, image, network, volume, etc.), você pode usar docker inspect para obter informações detalhadas sobre diferentes componentes do seu ambiente Docker.

Resumo

Neste laboratório, você aprendeu como usar o comando docker inspect para obter informações detalhadas sobre containers Docker. Você começou inspecionando um container e entendendo a saída JSON padrão abrangente, que fornece uma ampla gama de detalhes de configuração e estado.

Posteriormente, você explorou como formatar a saída usando a flag --format e Go templating para extrair informações específicas, como o endereço IP de um container. Isso demonstra a flexibilidade do docker inspect em adaptar a saída às suas necessidades.