Como usar o comando docker container ls para listar e filtrar contêineres

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar efetivamente o comando docker container ls (também conhecido como docker ps) para listar e gerenciar seus contêineres Docker. Você começará listando todos os contêineres em execução no momento e, em seguida, expandirá para incluir contêineres parados.

Além disso, você explorará como filtrar a lista de contêineres com base em vários critérios, como status e nome, e aprenderá como formatar a saída para exibir apenas as informações específicas que você precisa. Por fim, você descobrirá como verificar rapidamente o uso de disco de seus contêineres.

Listar todos os contêineres em execução

Nesta etapa, você aprenderá como listar todos os contêineres Docker em execução no momento. Este é um comando fundamental para gerenciar seus contêineres e entender o que está ativo em seu sistema.

Primeiro, vamos baixar uma imagem simples que podemos usar para executar um contêiner. Usaremos a imagem hello-world, que é uma imagem muito pequena projetada para testar sua instalação do Docker.

docker pull hello-world

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

Agora, vamos executar um contêiner usando esta imagem. O comando docker run cria e inicia um novo contêiner.

docker run hello-world

Este comando executará o contêiner hello-world. O contêiner imprimirá uma mensagem e, em seguida, sairá. Mesmo que ele saia, ainda é considerado um contêiner que existe em seu sistema, mas não está em execução.

Para ver apenas os contêineres que estão em execução no momento, você usa o comando docker ps.

docker ps

Como o contêiner hello-world saiu imediatamente após a execução, o comando docker ps provavelmente não mostrará nenhuma saída nas colunas "CONTAINER ID", "IMAGE", "COMMAND", etc., porque não há contêineres em execução no momento.

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

docker pull ubuntu

Agora, execute um contêiner Ubuntu que permanece em execução executando o comando sleep infinity. A flag -d executa o contêiner em modo detached (em segundo plano).

docker run -d ubuntu sleep infinity

Você verá uma longa sequência de caracteres, que é o ID do contêiner. Isso indica que o contêiner foi iniciado em segundo plano.

Agora, execute docker ps novamente para ver o contêiner em execução.

docker ps

Desta vez, você deve ver a saída listando o contêiner Ubuntu que você acabou de iniciar. A saída inclui informações como o ID do contêiner, a imagem usada, o comando em execução, quando foi criado, seu status, portas e um nome gerado aleatoriamente.

O comando docker ps é essencial para verificar rapidamente quais contêineres estão ativos e consumindo recursos em seu sistema.

Mostrar todos os contêineres, incluindo os parados

Na etapa anterior, você aprendeu como listar apenas os contêineres em execução usando docker ps. No entanto, às vezes você precisa ver todos os contêineres que existem em seu sistema, incluindo aqueles que foram parados. Isso é útil para limpar contêineres antigos ou inspecionar contêineres que saíram com um erro.

Para listar todos os contêineres, tanto em execução quanto parados, você usa o comando docker ps com a flag -a. O -a significa "all" (todos).

Vamos tentar este comando agora.

docker ps -a

Você deve ver uma lista que inclui o contêiner Ubuntu em execução da etapa anterior, bem como o contêiner hello-world que saiu após a execução. A coluna "STATUS" mostrará se um contêiner está "Up" (em execução) ou "Exited" (saiu).

A saída fornece as mesmas informações que docker ps (ID do contêiner, imagem, comando, tempo de criação, status, portas e nome), mas para todos os contêineres, independentemente de seu estado atual.

Este comando é muito útil para obter uma visão geral completa de todos os contêineres em seu sistema. Você pode ver quais contêineres foram criados, mesmo que não estejam ativos no momento.

Filtrar contêineres por status e nome

Nesta etapa, você aprenderá como filtrar a lista de contêineres com base em seu status ou nome. Isso é muito útil quando você tem muitos contêineres e deseja ver apenas um subconjunto específico.

O comando docker ps suporta uma flag --filter que permite especificar critérios para listar contêineres.

Vamos começar listando apenas os contêineres em execução usando um filtro. O status de um contêiner em execução é running (em execução).

docker ps --filter "status=running"

Este comando deve mostrar a mesma saída que docker ps da Etapa 1, listando apenas o contêiner Ubuntu que está em execução no momento.

Agora, vamos filtrar por contêineres que saíram. O status de um contêiner que saiu é exited (saiu). Lembre-se de incluir a flag -a para ver todos os contêineres, caso contrário, o filtro não encontrará contêineres que saíram se eles não forem listados por padrão.

docker ps -a --filter "status=exited"

Este comando deve mostrar o contêiner hello-world que você executou na Etapa 1, pois seu status é "Exited" (Saiu).

Você também pode filtrar pelo nome do contêiner. Quando você executa um contêiner sem especificar um nome usando a flag --name, o Docker atribui um nome aleatório. Você pode encontrar o nome do seu contêiner Ubuntu em execução executando docker ps. Olhe para a coluna "NAMES" (NOMES).

Digamos que o nome do seu contêiner Ubuntu seja algo como agitated_hoover. Você pode filtrar por este nome:

docker ps -a --filter "name=agitated_hoover"

Substitua agitated_hoover pelo nome real do seu contêiner Ubuntu. Este comando listará o contêiner com esse nome específico, independentemente de seu status (embora, neste caso, ele deva estar em execução).

Você pode combinar filtros também. Por exemplo, para encontrar um contêiner em execução com um nome específico:

docker ps --filter "status=running" --filter "name=agitated_hoover"

Novamente, substitua agitated_hoover pelo nome do seu contêiner.

A filtragem é uma maneira poderosa de gerenciar e inspecionar seus contêineres, especialmente em ambientes com muitos contêineres.

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

Nesta etapa, você aprenderá como personalizar a saída do comando docker ps para mostrar apenas as informações que você precisa. Isso é particularmente útil ao criar scripts ou quando você deseja uma visualização concisa de seus contêineres.

O comando docker ps suporta uma flag --format que permite especificar o formato de saída usando a sintaxe de template Go.

Vamos começar listando apenas os IDs dos contêineres de todos os contêineres.

docker ps -a --format "{{.ID}}"

Este comando produzirá uma lista de IDs de contêineres, um por linha, para todos os contêineres (em execução e parados). {{.ID}} é um espaço reservado (placeholder) de template Go que representa o ID do contêiner.

Agora, vamos listar o ID do contêiner e o nome da imagem, separados por uma tabulação.

docker ps -a --format "{{.ID}}\t{{.Image}}"

Você deve ver uma saída como [container ID] [image name] para cada contêiner. \t representa um caractere de tabulação no template Go.

Você pode incluir outros campos também. Aqui estão alguns campos comuns que você pode usar:

  • .ID: ID do contêiner
  • .Image: Nome da imagem
  • .Command: Comando sendo executado
  • .CreatedAt: Hora da criação
  • .Status: Status do contêiner
  • .Ports: Portas expostas
  • .Names: Nomes dos contêineres

Vamos listar o nome do contêiner e seu status.

docker ps -a --format "{{.Names}}: {{.Status}}"

Isso produzirá algo como [container name]: [status] para cada contêiner.

Você também pode usar o formato table (tabela) para obter uma saída mais legível com cabeçalhos, semelhante à saída padrão, mas com apenas as colunas que você especificar.

docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"

Este comando exibirá uma tabela com colunas para ID, Imagem, Nomes e Status para todos os contêineres.

Formatar a saída oferece controle preciso sobre as informações exibidas por docker ps, tornando mais fácil analisar e usar em scripts ou para necessidades específicas de relatórios.

Mostrar o uso de disco dos contêineres

Nesta etapa final, você aprenderá como visualizar o espaço em disco usado por seus contêineres, imagens e volumes Docker. Isso é importante para monitorar os recursos do seu sistema e identificar onde o espaço em disco está sendo consumido pelo Docker.

O comando docker system df fornece um resumo do espaço em disco usado por objetos Docker. df significa "disk free" (espaço livre em disco), semelhante ao comando Linux padrão.

Vamos executar o comando para ver o uso do disco.

docker system df

A saída mostrará um resumo incluindo:

  • Images (Imagens): O tamanho total de todas as imagens Docker em seu sistema.
  • Containers (Contêineres): O tamanho total da camada gravável para todos os contêineres. Este é o espaço usado pelas alterações feitas dentro do sistema de arquivos do contêiner.
  • Local Volumes (Volumes Locais): O tamanho total de todos os volumes locais. Volumes são usados para armazenamento persistente de dados.
  • Build Cache (Cache de Construção): O tamanho do cache de construção usado durante as construções de imagem.

Você verá colunas como "Total", "Active" (Ativo), "Size" (Tamanho) e "Reclaimable" (Recuperável).

  • Total: O número ou tamanho total dos objetos.
  • Active (Ativo): O número de objetos atualmente em uso (por exemplo, contêineres em execução, imagens usadas por contêineres em execução).
  • Size (Tamanho): O espaço total em disco consumido pelos objetos.
  • Reclaimable (Recuperável): A quantidade de espaço em disco que pode ser liberada removendo objetos não utilizados.

Para obter uma visualização mais detalhada, você pode usar a flag -v para saída verbose.

docker system df -v

Isso fornecerá uma análise mais detalhada, incluindo uma lista de imagens, contêineres e volumes individuais e seus respectivos tamanhos.

Compreender o uso de disco do Docker é crucial para manter um ambiente Docker saudável e evitar que seu disco se encha. Você pode usar as informações de docker system df para decidir quando limpar imagens, contêineres ou volumes não utilizados.

Resumo

Neste laboratório, você aprendeu como usar o comando docker container ls (também conhecido como docker ps) para listar contêineres Docker. Você começou listando apenas os contêineres em execução usando docker ps e, em seguida, aprendeu como mostrar todos os contêineres, incluindo os parados, adicionando a flag -a.

Além disso, você explorou como filtrar a lista de contêineres com base em critérios como status e nome usando a opção --filter. Você também aprendeu como personalizar o formato de saída para exibir informações específicas usando a flag --format e como visualizar o uso de disco dos contêineres com o comando docker system df.