A documentação oficial do Docker menciona que eu preciso executar docker rm -v containername
para remover especificamente um volume de dados. Mas o que você faz se já removeu todos os contêineres que referenciam o volume de dados específico?
Antes da versão 1.9, o Docker não fornecia nenhuma maneira de remover volumes pendentes.
Se esses volumes estiverem ocupando muito espaço em disco e você quiser resolver os problemas por conta própria, poderá excluir manualmente os volumes, identificando primeiro os que estão em uso. Você pode executar docker inspect -f '{{ .Volumes }}' containername
para encontrar o local no sistema de arquivos dos volumes em uso e excluir tudo, exceto aqueles. Se você tiver muitos contêineres, poderá percorrer for x in $(docker ps -qa | sed '1d'); do docker inspect -f '{{ .Volumes }}' ${x}; done
os contêineres e listar os volumes.
Melhor ainda, você pode usar o script Python aqui , o pré-requisito é instalar o cliente da API python para o Dockerpip install docker-py
| sed '1d'
? Joga fora o primeiro resultado. a-q
opção indocker ps -qa
já se livra da linha de cabeçalho na saída. Estou usando o docker versão 1.13 e lá tenho que usar em{{ .Mounts }}
vez de{{ .Volumes }}
.No Docker 1.9, há a capacidade de gerenciar melhor os volumes com
docker volume
(consulte este PR ):Estes podem ser removidos através deste comando:
fonte
dangling=false
lista exatamente os mesmos volumes para mim, apenas em uma ordem diferente. Docker 1.9.1. Parece suspeito; esse filtro oscilante está realmente funcionando? Ah, é um bug. github.com/docker/docker/issues/16095 (marcado como fechado, mas ainda um problema para mim ...)Comandos de limpeza: a partir da janela de encaixe 1.13 introduz comandos de limpeza. Para remover todos os contêineres, imagens, redes e volumes não utilizados:
docker system prune
ou individualmente:
docker container prune
docker image prune
docker network prune
docker volume prune
fonte
Comando de uso
para limpar volumes pendentes da janela de encaixe 1.9 e superior.
fonte
Eu tenho o docker 1.6.
A versão python não funcionou para mim, estava reclamando incompatibilidade de versão do docker. É incrível que, em tempos como este, nada supere o bom e velho jeito de fazer as coisas.
Basta adicionar a declaração da função 'volpurge ()' ao arquivo .bashrc da raiz. Esta função deve ser executada como raiz.
fonte