Como usar o comando docker inspect para visualizar detalhes do contêiner

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker inspect para visualizar informações detalhadas sobre contêineres Docker. Você explorará como inspecionar contêineres em execução e parados, entender o formato de saída JSON padrão e descobrir como formatar a saída usando um template Go para visualizações personalizadas. Além disso, você aprenderá como exibir informações sobre o tamanho do contêiner usando o comando docker inspect.

Através de exercícios práticos, você obterá experiência prática no uso do docker inspect para recuperar informações valiosas de configuração, estado e rede, o que é essencial para solucionar problemas e gerenciar seu ambiente Docker.

Inspecionar um contêiner em execução

Nesta etapa, você aprenderá como inspecionar um contêiner Docker em execução. O comando docker inspect fornece informações detalhadas sobre um contêiner, incluindo sua configuração, configurações de rede e estado.

Primeiro, vamos executar um contêiner simples que permanece em execução. Usaremos a imagem ubuntu e executaremos um comando que mantém o contêiner ativo.

docker run -d --name my-running-container ubuntu sleep infinity

No comando acima:

  • docker run: Este comando é usado para executar um novo contêiner.
  • -d: Esta flag executa o contêiner em modo detached (destacado), o que significa que ele é executado em segundo plano.
  • --name my-running-container: Isso atribui um nome ao contêiner, tornando mais fácil referenciá-lo.
  • ubuntu: Esta é a imagem que estamos usando. Se a imagem não estiver disponível localmente, o Docker a puxará (pull).
  • sleep infinity: Este comando é executado dentro do contêiner e o mantém em execução indefinidamente.

Agora que o contêiner está em execução, podemos inspecioná-lo. Use o comando docker inspect seguido pelo nome do contêiner.

docker inspect my-running-container

Este comando produzirá um grande objeto JSON contendo todos os detalhes sobre my-running-container. Você pode rolar pela saída para ver as várias seções, como Id, State, Config, NetworkSettings, etc.

Para tornar a saída mais legível ou para extrair informações específicas, você pode direcionar a saída para ferramentas como jq (um processador JSON de linha de comando leve e flexível). No entanto, para este laboratório, focaremos no comando básico docker inspect.

Após inspecionar o contêiner, você pode pará-lo e removê-lo para limpar seu ambiente.

docker stop my-running-container
docker rm my-running-container
  • docker stop my-running-container: Este comando para o contêiner em execução.
  • docker rm my-running-container: Este comando remove o contêiner parado.

Inspecionar um contêiner parado

Nesta etapa, você aprenderá que também pode inspecionar contêineres que não estão em execução no momento. O comando docker inspect funciona em contêineres em execução e parados, fornecendo acesso à sua configuração e estado final.

Primeiro, vamos executar um contêiner simples que sairá após um curto período de tempo.

docker run --name my-stopped-container ubuntu sleep 5

Neste comando:

  • docker run: Executa um novo contêiner.
  • --name my-stopped-container: Atribui um nome ao contêiner.
  • ubuntu: A imagem a ser usada.
  • sleep 5: O comando executado dentro do contêiner, que fará com que ele saia após 5 segundos.

Aguarde alguns segundos para que o contêiner termine de executar o comando sleep 5 e pare. Você pode verificar se o contêiner parou listando todos os contêineres (incluindo os parados) usando docker ps -a.

docker ps -a

Você deve ver my-stopped-container na lista com um status indicando que ele saiu.

Agora, você pode inspecionar o contêiner parado usando o comando docker inspect, assim como fez com o contêiner em execução na etapa anterior.

docker inspect my-stopped-container

Você verá novamente uma saída JSON detalhada. Observe que a seção State mostrará informações sobre o status de saída do contêiner e quando ele foi finalizado.

Inspecionar contêineres parados é útil para depurar ou entender por que um contêiner saiu.

Finalmente, limpe o contêiner parado.

docker rm my-stopped-container

Formatar a saída de inspeção como JSON

Nesta etapa, você aprenderá como formatar a saída do comando docker inspect especificamente como um array JSON. Isso é particularmente útil ao inspecionar vários objetos (como contêineres ou imagens) de uma vez, pois fornece uma saída estruturada que pode ser facilmente analisada por outras ferramentas ou scripts.

Primeiro, vamos executar dois contêineres simples que permanecerão em execução.

docker run -d --name container1 ubuntu sleep infinity
docker run -d --name container2 ubuntu sleep infinity

Agora, vamos inspecionar ambos os contêineres e formatar a saída como um array JSON. Podemos fazer isso fornecendo vários nomes de contêineres ao comando docker inspect.

docker inspect container1 container2

A saída será um único array JSON contendo os detalhes da inspeção para container1 e container2. Cada elemento no array é o objeto JSON para um único contêiner.

Este formato é o padrão ao inspecionar vários objetos. É uma maneira padrão de representar uma lista de dados estruturados.

Após a inspeção, pare e remova os contêineres.

docker stop container1 container2
docker rm container1 container2

Formatar a saída de inspeção usando um template Go

Nesta etapa, você aprenderá como usar templates Go para formatar a saída do comando docker inspect. Isso permite que você extraia informações específicas da saída JSON detalhada e as exiba em um formato personalizado.

Primeiro, vamos executar um contêiner que permanece em execução.

docker run -d --name my-templated-container ubuntu sleep infinity

Agora, vamos inspecionar este contêiner e usar um template Go para exibir apenas seu endereço IP. O endereço IP está localizado dentro do campo NetworkSettings.IPAddress da saída da inspeção.

docker inspect --format '{{.NetworkSettings.IPAddress}}' my-templated-container

Neste comando:

  • --format '{{.NetworkSettings.IPAddress}}': Esta flag especifica o formato usando um template Go.
    • {{...}}: Estas chaves duplas denotam uma ação no template Go.
    • .: Isso representa o objeto raiz sendo inspecionado (o contêiner).
    • NetworkSettings: Isso acessa o campo NetworkSettings dentro do objeto raiz.
    • IPAddress: Isso acessa o campo IPAddress dentro do objeto NetworkSettings.

A saída deste comando será apenas o endereço IP do contêiner.

Você pode usar templates Go para extrair várias informações. Por exemplo, para obter o nome e o ID do contêiner:

docker inspect --format 'Name: {{.Name}}, ID: {{.Id}}' my-templated-container

Isso produzirá algo como Name: /my-templated-container, ID: <container_id>.

Os templates Go oferecem recursos de formatação poderosos, incluindo declarações condicionais, loops e funções. No entanto, para este exemplo básico, estamos apenas acessando campos.

Após a inspeção, pare e remova o contêiner.

docker stop my-templated-container
docker rm my-templated-container

Exibir informações sobre o tamanho do contêiner

Nesta etapa, você aprenderá como exibir as informações de tamanho dos seus contêineres Docker. Isso pode ser útil para monitorar o uso do disco e entender a pegada dos seus contêineres.

Por padrão, o comando docker ps não mostra o tamanho dos contêineres. Para incluir informações de tamanho, você pode usar a flag --size ou -s.

Primeiro, vamos executar um contêiner simples.

docker run -d --name my-size-container ubuntu sleep infinity

Agora, liste os contêineres em execução e inclua as informações de tamanho.

docker ps --size

ou

docker ps -s

Na saída, você verá uma coluna adicional rotulada como SIZE. Esta coluna mostra dois valores:

  1. O tamanho da camada gravável do contêiner (as alterações feitas no sistema de arquivos do contêiner desde que foi criado).
  2. O tamanho total do contêiner, que inclui o tamanho das camadas da imagem mais a camada gravável.

O tamanho da camada gravável é frequentemente pequeno para contêineres simples que não escrevem muitos dados. O tamanho total será maior, pois inclui o tamanho da imagem base.

Você também pode ver informações de tamanho ao listar todos os contêineres (incluindo os parados) usando docker ps -a --size.

docker ps -a --size

Isso é útil para ver o tamanho de contêineres que foram finalizados, mas ainda não foram removidos.

Entender o tamanho do contêiner é importante para gerenciar o espaço em disco no seu host Docker.

Finalmente, pare e remova o contêiner.

docker stop my-size-container
docker rm my-size-container

Resumo

Neste laboratório, você aprendeu como usar o comando docker inspect para visualizar informações detalhadas sobre contêineres Docker. Você praticou a inspeção de contêineres em execução e parados, entendendo que o comando fornece dados abrangentes, independentemente do estado do contêiner.

Além disso, você explorou como formatar a saída do docker inspect, especificamente, exibindo os detalhes completos como JSON e usando templates Go para extrair e exibir informações específicas. Finalmente, você aprendeu como usar a flag --size para incluir informações sobre o tamanho do contêiner na saída da inspeção.