Conteúdo

Tutorial de Docker Volume: criar, listar, inspecionar e excluir volumes

docker volume gerencia volumes. Veja o conceito e como usar volumes em Volumes e persistência de dados.

Subcomandos

ComandoDescriçãoOpções comuns
docker volume create [nome]Cria um volume (se não informar um nome, um nome aleatório será gerado)--label chave=valor, -d driver, -o opção
docker volume lsLista os volumes-f filtro, -q lista apenas os nomes, --format
docker volume inspect nomeExibe informações detalhadas-f modelo
docker volume rm nome...Exclui volumes (não é possível excluir os que estão em uso)-f
docker volume pruneExclui volumes anônimos não utilizados-a inclui os nomeados, -f não pede confirmação, --filter

Filtros de docker volume ls -f: dangling=true (não está sendo usado por nenhum contêiner), name=parte do nome, label=chave=valor, driver=local.

Criar, gravar e ler

$ docker volume create mydata
mydata

$ docker volume ls
DRIVER    VOLUME NAME
local     2bc47e5efc92fb9cbc751a0d25853c6c800d4e4806c256fb7d68fa9dff112fcd
local     6729482c30a3f652c14f542c6f341c811f087fc9626efcfdf00a49a5ae721e2c
local     78297657b68403b39f39940496ce3faf49e6257a11d5103d043077a36261236a
local     a23af26d1da49e018edecb6e29f9be3875fb02e8c50510a40fbb5cf49da94f81
local     mydata

$ docker volume inspect mydata
[
    {
        "CreatedAt": "2026-10-13T05:28:56Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/mydata/_data",
        "Name": "mydata",
        "Options": null,
        "Scope": "local"
    }
]

$ docker run --rm -v mydata:/data alpine:3.23 sh -c "echo saved > /data/a.txt"

$ docker run --rm -v mydata:/data alpine:3.23 cat /data/a.txt
saved
  • Além de mydata, ls mostra alguns volumes anônimos com nomes longos, deixados por contêineres anteriores (por exemplo, criados automaticamente pela declaração VOLUME da imagem postgres).
  • Mountpoint em inspect é o caminho real dos dados no host Docker.
  • Dois contêineres diferentes montaram mydata um após o outro, e o segundo leu o arquivo gravado pelo primeiro: os dados ficam no volume, independentemente do contêiner.

Encontrar e limpar volumes órfãos

$ docker run --rm -v /tmpdata alpine:3.23 true

$ docker volume ls -f dangling=true
DRIVER    VOLUME NAME
local     2bc47e5efc92fb9cbc751a0d25853c6c800d4e4806c256fb7d68fa9dff112fcd
local     6729482c30a3f652c14f542c6f341c811f087fc9626efcfdf00a49a5ae721e2c
local     78297657b68403b39f39940496ce3faf49e6257a11d5103d043077a36261236a
local     a23af26d1da49e018edecb6e29f9be3875fb02e8c50510a40fbb5cf49da94f81
local     mydata

$ docker volume prune -f
Deleted Volumes:
a23af26d1da49e018edecb6e29f9be3875fb02e8c50510a40fbb5cf49da94f81
6729482c30a3f652c14f542c6f341c811f087fc9626efcfdf00a49a5ae721e2c
78297657b68403b39f39940496ce3faf49e6257a11d5103d043077a36261236a
2bc47e5efc92fb9cbc751a0d25853c6c800d4e4806c256fb7d68fa9dff112fcd

Total reclaimed space: 348.9MB
  • -v /tmpdata informa apenas o caminho dentro do contêiner, sem nome, e cria um volume anônimo; --rm também o exclui ao remover o contêiner.
  • dangling=true lista todos os volumes que não estão sendo usados por nenhum contêiner, incluindo o volume nomeado mydata.
  • prune -f excluiu apenas os 4 anônimos e liberou 348.9 MB; o volume nomeado mydata foi mantido.

Labels

$ docker volume create --label env=dev tagged
tagged

$ docker volume ls -f label=env=dev
DRIVER    VOLUME NAME
local     tagged

$ docker volume rm mydata tagged
mydata
tagged

Adicione labels aos volumes para facilitar a filtragem e a limpeza por projeto ou ambiente, por exemplo, com docker volume prune --filter label=env=dev.

Seções relacionadas

Exercícios

Exercício: crie um volume com a label project=demo e, em seguida, use um comando para excluir todos os volumes com essa label que não estejam em uso (incluindo os nomeados).

Resposta
docker volume create --label project=demo demo_data
docker volume prune -a -f --filter label=project=demo

-a inclui volumes nomeados no escopo da exclusão, e --filter limita a operação aos volumes com essa label.

Perguntas frequentes

Preciso executar docker volume create antes?

Não. docker run -v nome:/caminho cria o volume automaticamente se ele não existir. Criá-lo antes permite adicionar labels ou opções do driver.

docker volume prune vai excluir meu banco de dados?

A partir do Docker 23, docker volume prune exclui apenas **volumes anônimos que não estão sendo usados por nenhum contêiner**; volumes nomeados não são excluídos. docker volume prune -a é que exclui volumes nomeados não utilizados. Veja os testes em [Liberar espaço em disco](/pt/docker/cleanup/).

Como faço backup de um volume?

Use um contêiner temporário para montar o volume e uma pasta do host ao mesmo tempo e empacote os dados com tar. Veja o exemplo em [Volumes e persistência de dados](/pt/docker/volumes/).

Atualizado 14 de outubro de 2026