docker system prune to dockerowa miotła do generalnego sprzątania. Jednym poleceniem usuwasz z hosta nagromadzony bałagan: zatrzymane kontenery, nieużywane sieci, wiszące (dangling) obrazy oraz cache build. Po kilku tygodniach budowania obrazów potrafi to uwolnić dziesiątki gigabajtów, które Docker po cichu trzymał „na wszelki wypadek”. Komenda działa tak samo na Linuksie, w Docker Desktop na macOS i Windows — różni się tylko to, gdzie fizycznie leżą dane.
Składnia i najważniejsze opcje
Podstawowa forma jest banalna: docker system prune [OPTIONS]. Bez żadnych flag usuwa zatrzymane kontenery, nieużywane sieci, wiszące obrazy i cache build — i pyta o potwierdzenie.
-a,--all— usuwa wszystkie nieużywane obrazy, nie tylko wiszące. To ta flaga, która naprawdę robi miejsce na dysku.--volumes— dorzuca do czyszczenia nieużywane (anonimowe) wolumeny. Domyślnie wolumeny są pomijane, żeby nie skasować Ci danych.-f,--force— pomija pytanie „Are you sure?”. Przydatne w skryptach i CI/CD, niebezpieczne pod palcem zmęczonego admina.--filter— zawęża zakres. Obsługujeuntil(np. wiek obiektu) ilabel.
Przykłady użycia
docker system prune— bezpieczny start: czyści zatrzymane kontenery, sieci, wiszące obrazy i cache, po drodze pytając o zgodę.docker system prune -a— to samo plus wszystkie nieużywane obrazy. Uważaj: skasuje też obrazy, których akurat nie używa żaden kontener, choć możesz ich potrzebować.docker system prune -a --volumes— pełna jazda: kontenery, sieci, obrazy, cache i nieużywane wolumeny. Tu znikają dane, jeśli nie były podpięte pod działający kontener.docker system prune --filter "until=24h"— usuwa tylko obiekty starsze niż 24 godziny, oszczędzając te świeżo utworzone.docker system prune -af --filter "label=projekt=test"— czyści bez pytania wszystkie nieużywane zasoby oznaczone etykietąprojekt=test. Idealne do sprzątania po środowisku testowym.
Częste błędy i pułapki
Największa pułapka to dopisanie -a z rozpędu na produkcji. Flaga usuwa obrazy bez działającego kontenera, więc jeśli masz pobrane bazowe obrazy „na zapas”, pożegnasz się z nimi i będziesz je ciągnął od nowa. Druga mina to --volumes: kasuje wolumeny anonimowe, a tam często siedzi baza danych, której nikt nie nazwał. Zanim odpalisz, zrób docker system df, żeby zobaczyć, ile realnie zajmuje co. Pamiętaj też, że prune ruszy tylko nieużywane obiekty — działający kontener i jego wolumen są bezpieczne, ale dane zatrzymanego już niekoniecznie.
Powiązane komendy: docker image prune, docker container prune, docker volume prune, docker network prune, docker builder prune, docker system df.