Aktualizacja września 2016: Docker 1.13: PR 26108 i zatwierdzenie 86de7c0 wprowadzają kilka nowych poleceń, aby ułatwić wizualizację, ile miejsca zajmują dane demona dokera na dysku i pozwalając na łatwe usunięcie „niepotrzebnego” nadmiaru.
docker system prune
usunie WSZYSTKIE wiszące dane (tzn. W kolejności: pojemniki zatrzymane, woluminy bez pojemników i obrazy bez pojemników). Nawet nieużywane dane, z -a
opcją.
Masz także:
W przypadku nieużywanych obrazów użyj docker image prune -a
(do usuwania wiszących i nieskróconych obrazów).
Ostrzeżenie: „ nieużywany ” oznacza „obrazy, do których nie odwołuje się żaden pojemnik”: przed użyciem należy zachować ostrożność -a
.
Jak pokazano na AL „s odpowiedzi , docker system prune --all
usunie wszystkie nieużywane obrazy nie tylko zwisające z nich ... co może być trochę za dużo.
Połączenie docker xxx prune
z --filter
opcją może być świetnym sposobem na ograniczenie przycinania ( dokerujące SDK API 1.28 minimum, więc dokerowane 17.04+ )
Aktualnie obsługiwane filtry to:
until (<timestamp>)
- usuwaj tylko pojemniki, obrazy i sieci utworzone przed określonym znacznikiem czasu
label
( label=<key>
, label=<key>=<value>
, label!=<key>
, Lub label!=<key>=<value>
) - tylko usunąć pojemniki, obrazów, sieci i woluminów z (lub bez , w przypadek label!=...
jest używany) określonych etykiet.
Zobacz przykład „ Przycinaj obrazy ”.
Oryginalna odpowiedź (wrzesień 2016)
Zwyklę robię:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Mam alias do usuwania tych [wiszących obrazów] 13 :drmi
dangling=true
Filtr wyszukuje nieużywane obrazów
W ten sposób usuwany jest każdy obraz pośredni, do którego nie ma już obrazu z etykietą.
To samo robię najpierw dla zakończonych procesów (kontenerów)
alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'
Jak wskazuje haridsv w komentarzach :
Technicznie rzecz biorąc, najpierw należy wyczyścić pojemniki przed czyszczeniem obrazów, ponieważ spowoduje to złapanie większej liczby wiszących obrazów i mniej błędów .
Jess Frazelle (jfrazelle) ma funkcję 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
}
Aby usunąć stare obrazy, a nie tylko obrazy „wiszące bez odniesienia”, możesz rozważyć docker-gc
:
Prosty skrypt Docker do kontenerów i usuwania śmieci.
- Pojemniki, które opuściły ponad godzinę temu, są usuwane.
- Obrazy, które nie należą do żadnego pozostałego pojemnika po tym, są usuwane.
"dangling=true"
tak naprawdę oznacza?