Como usar o comando docker volume rm para remover volumes

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como gerenciar volumes Docker usando o comando docker volume rm. Você começará criando um volume e, em seguida, praticará a sua remoção.

Além disso, você explorará cenários onde um volume está em uso por um container e tentará removê-lo, compreendendo o comportamento padrão e como forçar a remoção de um volume que está atualmente anexado a um container em execução.

Criar um volume

Nesta etapa, você aprenderá como criar um volume Docker. Volumes são a maneira preferida de persistir dados gerados e usados por containers 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, você usa o comando docker volume create seguido pelo nome que deseja dar ao volume. Vamos criar um volume 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 verificar se o volume foi criado listando todos os volumes disponíveis usando o comando docker volume ls.

docker volume ls

Você deve ver myvolume listado na saída.

Tentar remover o volume

Nesta etapa, você tentará remover o volume que criou na etapa anterior. Para remover um volume Docker, você usa o comando docker volume rm seguido pelo nome do volume.

Vamos tentar remover o volume myvolume.

docker volume rm myvolume

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

Agora, vamos verificar se o volume foi removido listando todos os volumes disponíveis novamente.

docker volume ls

Você não deve mais ver myvolume na saída.

Remover o volume

Na etapa anterior, você tentou remover o volume. Agora, vamos garantir que ele seja removido. Você usa o mesmo comando docker volume rm seguido pelo nome do volume.

docker volume rm myvolume

Se o volume foi removido com sucesso na etapa anterior, você pode ver um erro indicando que o volume não foi encontrado. Isso é esperado e confirma que o volume foi removido. Se o volume não foi removido na etapa anterior, este comando o removerá agora.

Para confirmar que o volume foi removido, liste os volumes novamente.

docker volume ls

O myvolume não deve aparecer na lista.

Criar um volume e um container utilizando-o

Nesta etapa, você criará um novo volume e, em seguida, criará um container Docker que usa este volume para persistir dados.

Primeiro, vamos criar um novo volume chamado mydata.

docker volume create mydata

Em seguida, executaremos um container ubuntu simples e montaremos o volume mydata no diretório /app dentro do container. Também executaremos um comando que grava algum texto em um arquivo dentro do volume montado.

Antes de executar o container, vamos baixar a imagem ubuntu para garantir que ela esteja disponível localmente.

docker pull ubuntu

Agora, execute o container e escreva no volume:

docker run -d --name mycontainer -v mydata:/app ubuntu bash -c "echo 'Hello from the volume!' > /app/greeting.txt && tail -f /dev/null"

Vamos detalhar este comando:

  • docker run: Comando para executar um novo container.
  • -d: Executa o container em modo detached (em segundo plano).
  • --name mycontainer: Atribui o nome mycontainer ao container.
  • -v mydata:/app: Esta é a montagem do volume. Ele monta o volume Docker chamado mydata no diretório /app dentro do container.
  • ubuntu: A imagem Docker a ser usada.
  • bash -c "echo 'Hello from the volume!' > /app/greeting.txt && tail -f /dev/null": O comando a ser executado dentro do container. Ele grava "Hello from the volume!" em um arquivo chamado greeting.txt no diretório /app (que é o volume montado) e, em seguida, executa tail -f /dev/null para manter o container em execução.

Para verificar se o container está em execução e o volume está anexado, você pode inspecionar o container.

docker inspect mycontainer

Procure a seção "Mounts" na saída. Você deve ver uma entrada para o volume mydata montado em /app.

Tentar remover o volume em uso

Nesta etapa, você tentará remover o volume mydata enquanto ele ainda está sendo usado pelo container mycontainer. Isso demonstrará o que acontece quando você tenta remover um volume que está ativamente montado em um container em execução.

Use o comando docker volume rm para tentar remover o volume mydata.

docker volume rm mydata

Você deve ver uma mensagem de erro indicando que o volume está em uso e não pode ser removido. Este é o comportamento esperado. O Docker impede que você remova um volume que está atualmente anexado a um container em execução para evitar perda de dados ou comportamento inesperado.

Para confirmar que o volume não foi removido, liste os volumes novamente.

docker volume ls

Você ainda deve ver mydata na saída.

Remover o volume em uso forçadamente

Na etapa anterior, você aprendeu que não é possível remover um volume que está atualmente em uso por um container em execução. No entanto, pode haver situações em que você precise remover um volume, mesmo que ele esteja em uso. O Docker fornece uma maneira de forçar a remoção de um volume usando a flag -f ou --force com o comando docker volume rm.

Observação: Forçar a remoção de um volume que está em uso pode levar à perda de dados e a um comportamento inesperado para o container que o utiliza. Use esta opção com cautela.

Vamos tentar remover à força o volume mydata enquanto mycontainer ainda está em execução.

docker volume rm -f mydata

Você deve ver o nome do volume impresso no console, indicando que ele foi removido.

Agora, vamos verificar se o volume foi removido listando os volumes.

docker volume ls

O volume mydata não deve mais estar na lista.

Você também pode verificar o status do mycontainer.

docker ps

O mycontainer ainda pode aparecer na lista de containers em execução, mas pode estar em um estado não saudável ou parar inesperadamente porque seu volume foi removido.

Finalmente, vamos parar e remover o container para limpar.

docker stop mycontainer
docker rm mycontainer

Resumo

Neste laboratório, você aprendeu a gerenciar volumes do Docker usando o comando docker volume. Você começou criando um volume chamado myvolume usando docker volume create e verificou sua existência com docker volume ls. Em seguida, você praticou a remoção do volume usando docker volume rm e confirmou sua remoção listando os volumes novamente.

Você também explorou o comportamento de docker volume rm quando um volume está em uso por um container. Você criou um volume e um container que o utilizava, e observou que tentar remover o volume diretamente falhou. Finalmente, você aprendeu como forçar a remoção de um volume que está em uso adicionando a flag -f ao comando docker volume rm.