Aggiornamento settembre 2016: Docker 1.13: PR 26108 e commit 86de7c0 introducono alcuni nuovi comandi per aiutare a visualizzare quanto spazio occupano i dati del daemon docker sul disco e consentire di eliminare facilmente l'eccesso "non necessario".
docker system prune
eliminerà TUTTI i dati penzolanti (cioè nell'ordine: contenitori fermi, volumi senza contenitori e immagini senza contenitori). Anche i dati non utilizzati, con -a
opzione.
Hai anche:
Per immagini inutilizzate , utilizzare docker image prune -a
(per rimuovere immagini pendenti e non consultate).
Avvertenza: " non utilizzato " significa "immagini non referenziate da nessun contenitore": fare attenzione prima dell'uso -a
.
Come illustrato nella AL 's risposta , docker system prune --all
rimuoverà tutti i inutilizzati immagini non solo penzoloni quelli ... che può essere un po' troppo.
La combinazione docker xxx prune
con l' --filter
opzione può essere un ottimo modo per limitare la potatura ( docker SDK API 1.28 minimo, quindi docker 17.04+ )
I filtri attualmente supportati sono:
until (<timestamp>)
- rimuove solo i contenitori, le immagini e le reti create prima della data e ora
label
( label=<key>
, label=<key>=<value>
, label!=<key>
, O label!=<key>=<value>
) - rimuovere solo contenitori, immagini, reti e volumi con (o senza , in caso label!=...
è utilizzato) le etichette specificate.
Vedi " Elimina le immagini " per un esempio.
Risposta originale (settembre 2016)
Di solito faccio:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Ho un alias per rimuovere quelle [immagini penzolanti] 13 :drmi
Il dangling=true
filtro trova immagini inutilizzate
In questo modo, qualsiasi immagine intermedia a cui non fa più riferimento un'immagine etichettata viene rimossa.
Faccio lo stesso prima per i processi usciti (container)
alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'
Come sottolinea haridsv nei commenti :
Tecnicamente, dovresti prima pulire i contenitori prima di ripulire le immagini, in quanto ciò catturerà più immagini penzolanti e meno errori .
Jess Frazelle (jfrazelle) ha la funzione 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
}
Per rimuovere vecchie immagini e non solo immagini "senza riferimenti", puoi considerare docker-gc
:
Un semplice contenitore Docker e uno script di raccolta dati inutili.
- I contenitori che sono usciti più di un'ora fa vengono rimossi.
- Le immagini che non appartengono ad alcun contenitore rimanente dopo che sono state rimosse.
"dangling=true"
significhi davvero?