Como usar o comando docker volume ls para listar e filtrar volumes

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar efetivamente o comando docker volume ls para gerenciar seus volumes Docker. Começaremos criando volumes de exemplo para trabalhar. Em seguida, você descobrirá como listar todos os volumes existentes em seu sistema.

Com base na listagem, você explorará como filtrar volumes com base em critérios como nome e driver, e também por seu status "dangling" (pendente/solto). Finalmente, você aprenderá como formatar a saída do comando docker volume ls para melhor legibilidade e extração de informações específicas.

Criar volumes de exemplo

Nesta etapa, aprenderemos como criar volumes Docker. Volumes são a maneira preferida de persistir dados gerados e usados por contêineres Docker. Enquanto as montagens de ligação (bind mounts) dependem da estrutura de diretórios da máquina host, os volumes são completamente gerenciados pelo Docker.

Para criar um volume, usamos o comando docker volume create. Vamos criar um volume simples chamado myvolume.

docker volume create myvolume

Você deve ver o nome do volume impresso no console se a criação foi bem-sucedida.

Agora, vamos criar outro volume chamado another_volume.

docker volume create another_volume

Agora criamos dois volumes que podem ser usados por contêineres Docker para armazenar dados persistentes.

Listar todos os volumes

Nesta etapa, aprenderemos como listar todos os volumes Docker que existem em nosso sistema. Isso é útil para ver quais volumes estão disponíveis e gerenciá-los.

Para listar todos os volumes, usamos o comando docker volume ls. Este comando mostrará uma lista de todos os volumes, incluindo seu driver e nome.

docker volume ls

Você deve ver os volumes que criamos na etapa anterior (myvolume e another_volume) listados na saída, juntamente com quaisquer outros volumes que possam existir no sistema. A saída normalmente inclui o DRIVER e o VOLUME NAME.

O driver padrão para volumes geralmente é local, o que significa que o volume é armazenado na máquina local onde o Docker está sendo executado.

Filtrar volumes por nome e driver

Nesta etapa, aprenderemos como filtrar a lista de volumes Docker com base em seu nome e driver. Isso é útil quando você tem muitos volumes e deseja encontrar volumes específicos.

Podemos usar a flag --filter com o comando docker volume ls para filtrar a saída. O filtro recebe um par chave=valor.

Para filtrar por nome, usamos a chave name. Vamos filtrar pelo volume chamado myvolume.

docker volume ls --filter name=myvolume

Você deve ver apenas o myvolume listado na saída.

Agora, vamos filtrar pelo driver. Como usamos o driver padrão ao criar os volumes, o driver é local. Vamos filtrar por volumes usando o driver local.

docker volume ls --filter driver=local

Este comando deve listar todos os volumes que usam o driver local, o que deve incluir tanto myvolume quanto another_volume.

Você também pode combinar filtros. Por exemplo, para filtrar por um volume chamado myvolume que usa o driver local, você pode usar:

docker volume ls --filter name=myvolume --filter driver=local

Isso mostrará novamente apenas o myvolume.

Filtrar volumes por status 'dangling'

Nesta etapa, aprenderemos como filtrar volumes Docker com base em seu status "dangling" (pendente/solto). Um volume dangling é um volume que não está atualmente anexado a nenhum contêiner. Esses volumes podem consumir espaço em disco desnecessariamente.

Para filtrar por volumes dangling, usamos a flag --filter dangling=true.

Primeiro, vamos criar um contêiner e anexar um de nossos volumes a ele. Usaremos a imagem ubuntu. Se você não tiver a imagem ubuntu localmente, o Docker a puxará automaticamente.

docker run -d --name mycontainer -v myvolume:/app ubuntu sleep 3600

Este comando executa um contêiner chamado mycontainer em modo detached (-d), monta myvolume no diretório /app dentro do contêiner (-v myvolume:/app), usa a imagem ubuntu e mantém o contêiner em execução por uma hora (sleep 3600).

Agora, vamos listar todos os volumes novamente:

docker volume ls

Você verá tanto myvolume quanto another_volume. myvolume está atualmente em uso por mycontainer. another_volume não está anexado a nenhum contêiner, portanto, é um volume dangling.

Agora, vamos filtrar por volumes dangling:

docker volume ls --filter dangling=true

Você deve ver another_volume listado na saída, pois ele não está anexado a nenhum contêiner em execução.

Para ver volumes que não são dangling (ou seja, anexados a um contêiner), você pode usar --filter dangling=false.

docker volume ls --filter dangling=false

Isso deve mostrar myvolume.

Finalmente, vamos parar e remover o contêiner que criamos.

docker stop mycontainer
docker rm mycontainer

Agora, se você listar os volumes dangling novamente:

docker volume ls --filter dangling=true

Tanto myvolume quanto another_volume devem agora aparecer como dangling, porque myvolume não está mais anexado a um contêiner.

Formatar a saída de volumes

Nesta etapa, aprenderemos como formatar a saída do comando docker volume ls. Isso nos permite personalizar as informações exibidas e apresentá-las de uma forma que seja mais útil para nossas necessidades.

Podemos usar a flag --format para especificar o formato de saída. Esta flag aceita a sintaxe de template Go.

Vamos listar os volumes e exibir apenas o nome do volume. Podemos usar o template {{.Name}} para conseguir isso.

docker volume ls --format "{{.Name}}"

Este comando exibirá uma lista de nomes de volumes, um por linha.

Agora, vamos exibir tanto o driver quanto o nome, separados por dois pontos. Podemos usar {{.Driver}}:{{.Name}}.

docker volume ls --format "{{.Driver}}:{{.Name}}"

A saída mostrará o driver e o nome para cada volume, como local:myvolume.

Também podemos usar o formato table para exibir a saída em um formato de tabela mais legível, semelhante à saída padrão, mas com mais controle sobre as colunas. Vamos exibir o driver e o nome em uma tabela.

docker volume ls --format "table {{.Driver}}\t{{.Name}}"

O \t é usado para criar um espaço de tabulação entre as colunas. A saída será uma tabela com "DRIVER" e "NAME" como cabeçalhos.

Finalmente, vamos limpar os volumes que criamos durante este laboratório. Podemos removê-los usando o comando docker volume rm.

docker volume rm myvolume another_volume

Você deve ver a confirmação de que os volumes foram removidos.

Resumo

Neste laboratório, aprendemos como gerenciar volumes Docker usando o comando docker volume ls. Começamos criando volumes de exemplo usando docker volume create. Em seguida, exploramos como listar todos os volumes existentes no sistema usando docker volume ls.

Além disso, nos aprofundamos na filtragem de volumes para localizar volumes específicos. Aprendemos a filtrar volumes por nome e driver usando a flag --filter com as chaves name e driver. O laboratório também abordou a filtragem de volumes com base em seu status dangling e a formatação da saída do comando docker volume ls para melhor legibilidade.