Atualização em setembro de 2016: o Docker 1.13: PR 26108 e o commit 86de7c0 apresentam alguns novos comandos para facilitar a visualização de quanto espaço os dados do daemon do estivador estão ocupando no disco e permitindo limpar facilmente o excesso "desnecessário".
docker system prune
excluirá TODOS os dados pendentes (ou seja, em ordem: contêineres parados, volumes sem contêineres e imagens sem contêineres). Mesmo dados não utilizados, com -a
opção.
Você também tem:
Para imagens não utilizadas , use docker image prune -a
(para remover imagens pendentes e não utilizadas).
Aviso: ' não utilizado ' significa "imagens não referenciadas por nenhum contêiner": tenha cuidado antes de usar-a
.
Como ilustrado na AL 's resposta , docker system prune --all
irá remover todos os não utilizados imagens não apenas balançando aqueles ... que pode ser um pouco demais.
Combinar docker xxx prune
com a --filter
opção pode ser uma ótima maneira de limitar a remoção ( docker SDK API 1.28 no mínimo, portanto docker 17.04+ )
Os filtros atualmente suportados são:
until (<timestamp>)
- remova apenas contêineres, imagens e redes criadas antes do carimbo de data / hora
label
( label=<key>
, label=<key>=<value>
, label!=<key>
Ou label!=<key>=<value>
) - só remover os recipientes, imagens, redes e volumes com (ou sem , no caso label!=...
é usado) os rótulos especificados.
Consulte " Remover imagens " para obter um exemplo.
Resposta original (setembro de 2016)
Eu costumo fazer:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Eu tenho um apelido para remover essas [imagens pendentes] 13 :drmi
O dangling=true
filtro encontra imagens não utilizadas
Dessa forma, qualquer imagem intermediária que não seja mais referenciada por uma imagem rotulada será removida.
Eu faço o mesmo primeiro para processos encerrados (contêineres)
alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'
Como haridsv aponta nos comentários :
Tecnicamente, você deve primeiro limpar os contêineres antes de limpar as imagens, pois isso captura mais imagens pendentes e menos erros .
Jess Frazelle (jfrazelle) tem a função bashrc :
dcleanup(){
docker rm -v $(docker ps --filter status=exited -q 2>/dev/null) 2>/dev/null
docker rmi $(docker images --filter dangling=true -q 2>/dev/null) 2>/dev/null
}
Para remover imagens antigas e não apenas imagens "pendentes não referenciadas", considere docker-gc
:
Um contêiner Docker simples e um script de coleta de lixo de imagens.
- Os contêineres que saíram há mais de uma hora atrás são removidos.
- Imagens que não pertencem a nenhum contêiner restante depois disso são removidas.
"dangling=true"
realmente significa?