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 pruneeliminerà TUTTI i dati penzolanti (cioè nell'ordine: contenitori fermi, volumi senza contenitori e immagini senza contenitori). Anche i dati non utilizzati, con -aopzione.
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 --allrimuoverà tutti i inutilizzati immagini non solo penzoloni quelli ... che può essere un po' troppo.
La combinazione docker xxx prunecon l' --filteropzione 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=truefiltro 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?