O Guia Essencial para Comandos de Gerenciamento de Volumes Docker
Aprenda comandos de volume Docker para criar, listar, inspecionar, montar, fazer backup, remover e limpar dados persistentes.
Guia Essencial para Comandos de Gerenciamento de Volumes Docker
Os comandos de gerenciamento de volumes Docker são importantes assim que seu contêiner escreve dados que você valoriza. A camada gravável de um contêiner desaparece quando você o remove, mas um volume Docker pode manter arquivos de banco de dados, uploads, dados de cache ou estado do aplicativo durante reconstruções de contêiner.
Este guia mostra os comandos principais do docker volume, como anexar volumes a contêineres e onde os comandos de limpeza podem surpreendê-lo.
O Que São Volumes Docker?
Volumes Docker são objetos de armazenamento gerenciados pelo Docker. Eles ficam fora da camada gravável do contêiner, geralmente em um local gerenciado pelo Docker no host quando você usa o driver local padrão. Um volume nomeado permanece disponível depois que você para, remove ou recria o contêiner que o usou.
Volumes são úteis porque fornecem:
- Persistência: Os dados sobrevivem à substituição do contêiner.
- Isolamento: Os dados do aplicativo são separados da imagem e da camada gravável.
- Suporte a drivers: Drivers de volume podem usar discos locais, armazenamento em rede ou backends de armazenamento específicos da plataforma.
- Clareza operacional: Volumes nomeados são mais fáceis de inspecionar, fazer backup e reutilizar do que camadas de contêiner anônimas.
Comandos Principais do docker volume
O comando docker volume é a interface principal para criar, listar, inspecionar e excluir volumes.
docker volume create
Criar um volume nomeado:
docker volume create my-app-data
Criar um volume com nome gerado pelo Docker:
docker volume create
Você também pode passar opções de driver ao usar uma configuração não padrão:
docker volume create --driver local my-app-data
docker volume ls
Listar volumes:
docker volume ls
Mostrar apenas nomes:
docker volume ls -q
Filtrar volumes órfãos:
docker volume ls --filter dangling=true
dangling=true significa que o Docker não vê o volume como referenciado por um contêiner. Não significa que os dados são irrelevantes.
docker volume inspect
Inspecionar um volume:
docker volume inspect my-app-data
Para um volume local, a saída é semelhante a esta:
[
{
"CreatedAt": "2026-05-23T10:00:00Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/my-app-data/_data",
"Name": "my-app-data",
"Options": null,
"Scope": "local"
}
]
O Mountpoint é útil para solução de problemas, mas evite editar arquivos lá diretamente enquanto os contêineres estiverem usando o volume. Deixe o aplicativo ou um contêiner de manutenção controlado escrever os dados.
docker volume rm
Remover um ou mais volumes:
docker volume rm my-app-data
O Docker não removerá um volume enquanto algum contêiner ainda o referenciar, mesmo que esse contêiner esteja parado. Encontre e remova esses contêineres primeiro:
docker ps -a --filter volume=my-app-data
docker rm <nome-ou-id-do-contêiner>
docker volume rm my-app-data
Este comando exclui os dados do volume. Faça backup primeiro se os dados forem importantes.
docker volume prune
Prune remove volumes locais não utilizados. Nas versões atuais do Docker, docker volume prune remove volumes anônimos não utilizados por padrão. Use --all se também quiser remover volumes nomeados não utilizados.
Remover volumes anônimos não utilizados:
docker volume prune
Pular o prompt de confirmação:
docker volume prune --force
Remover todos os volumes locais não utilizados, incluindo volumes nomeados:
docker volume prune --all
Use rótulos para tornar a limpeza mais segura:
docker volume create --label app=myapp myapp-cache
docker volume prune --filter label=app=myapp
Operações de prune excluem dados permanentemente. Verifique o que um volume contém antes de limpar dados de aplicativos nomeados.
Montando Volumes com Contêineres
Anexe volumes ao criar um contêiner. O Docker pode criar o volume nomeado automaticamente se ele ainda não existir.
Usando -v
docker run --name my-postgres \
-v pgdata:/var/lib/postgresql/data \
-d postgres
Aqui, pgdata é o nome do volume e /var/lib/postgresql/data é o caminho dentro do contêiner.
Usando --mount
--mount é mais explícito e mais fácil de ler em scripts:
docker run --name my-redis \
--mount type=volume,source=redisdata,target=/data \
-d redis
Ambas as formas são válidas. Use --mount quando quiser uma sintaxe chave-valor mais clara, especialmente com opções de montagem extras.
Fazer Backup e Restaurar um Volume
Volumes Docker são armazenamento persistente, mas não são backups. Um padrão simples de backup é executar um contêiner temporário que monta o volume e grava um arquivo no diretório atual:
docker run --rm \
-v my-app-data:/data:ro \
-v "$PWD":/backup \
alpine \
tar czf /backup/my-app-data.tgz -C /data .
Restaurar em um volume vazio:
docker volume create my-app-data-restored
docker run --rm \
-v my-app-data-restored:/data \
-v "$PWD":/backup \
alpine \
tar xzf /backup/my-app-data.tgz -C /data
Para bancos de dados, prefira ferramentas de backup nativas do banco quando a consistência for importante. Um arquivo do sistema de arquivos de um volume de banco de dados ativo pode não ser seguro, a menos que o banco esteja parado ou suporte esse método de backup.
Melhores Práticas para Gerenciamento de Volumes Docker
- Use volumes nomeados para dados que você planeja manter.
- Rotule volumes que pertencem a um aplicativo ou ambiente.
- Inspecione volumes antes de excluí-los ou limpá-los.
- Faça backup de volumes importantes fora do host Docker.
- Evite armazenar dados insubstituíveis apenas em um volume anônimo.
- Teste restaurações, não apenas backups.
- Use drivers de volume quando precisar de armazenamento fora do host Docker local.
Conclusão
Use volumes Docker nomeados para estado que você deseja manter, inspecione-os antes de excluir qualquer coisa e trate prune como um comando de limpeza com risco real de perda de dados. O fluxo de trabalho diário é simples: crie ou deixe o Docker criar o volume, monte-o com docker run, inspecione-o ao solucionar problemas, faça backup quando for importante e remova-o apenas depois que nenhum contêiner o referenciar.