Sprzątanie Dockera: usuń zbędne zasoby i zachowaj dane

Docker przechowuje obrazy, zatrzymane kontenery i cache, dopóki nie usuniesz ich właściwą operacją. To pozwala wrócić do wcześniejszej pracy, ale z czasem zajmuje dysk. Porządki zacznij od identyfikacji zasobów i miejsca przechowywania danych aplikacji. „Nieużywany” w rozumieniu Dockera nie znaczy „niepotrzebny Tobie”, szczególnie przy zatrzymanej bazie lub dawnym projekcie.

Odczyt przed usuwaniem

docker system df -v
docker ps -a
docker image ls
docker volume ls

Uruchom polecenia osobno w kontekście właściwego demona Docker. Pierwsze pokazuje zużycie, kolejne kontenery, obrazy i wolumeny. Porównaj je z projektami, które nadal utrzymujesz. Przy zdalnym kontekście polecenia dotyczą zdalnej instalacji, dlatego przed sprzątaniem potwierdź, na którym hoście pracujesz.

Kolumna miejsca możliwego do odzyskania jest oceną techniczną, nie listą zatwierdzonych do skasowania danych. Obrazy współdzielą warstwy, więc proste dodawanie rozmiarów może zawyżać oczekiwaną oszczędność. Jeśli potrzebujesz rozpoznać główne źródło wzrostu, zajrzyj do poradnika ile miejsca zajmuje Docker.

Kontener może zawierać dane poza wolumenem

Sprawdź montowania rozpoznanego kontenera:

docker inspect --format '{{json .Mounts}}' NAZWA_KONTENERA

Oznaczenie zastąp właściwą nazwą. Odczyt pomoże rozpoznać wolumeny i bind mounty, ale nie potwierdzi, że aplikacja zapisała wszystkie dane właśnie tam. Pliki w warstwie zapisywalnej kontenera znikną razem z nim. Zatrzymany kontener może nadal przechowywać ważny eksport, zmienioną konfigurację albo jedyną bazę utworzoną bez trwałego montowania.

Przed usunięciem zabezpiecz dane obsługiwaną metodą aplikacji i zachowaj konfigurację potrzebną do odtworzenia. Sam obraz nie zastępuje backupu bazy. Jeśli nie wiesz, gdzie aplikacja zapisuje dane, wstrzymaj sprzątanie tego zasobu. Nie zakładaj, że ponowne uruchomienie Compose odtworzy zawartość usuniętej warstwy.

Najpierw usuń wybrane zatrzymane kontenery

Po rozpoznaniu konkretnego, niepotrzebnego kontenera możesz użyć:

docker container rm NAZWA_KONTENERA

To operacja usuwania, a nie podgląd. Nie dodawaj -f ani -v jako rutynowych opcji. Pierwsza może wymusić usunięcie działającego kontenera, druga rozszerza zakres na związane wolumeny anonimowe. Ograniczona operacja na jednym znanym obiekcie jest łatwiejsza do oceny niż usunięcie wszystkich zatrzymanych pozycji.

docker container prune usuwa wszystkie zatrzymane kontenery pasujące do podanych warunków. Nie pokazuje kompletnego planu typu dry-run. Komunikat potwierdzenia nie rozpoznaje wartości ich danych. Używaj go dopiero, gdy sprawdziłeś całą objętą grupę; samo „Exited” na liście nie uzasadnia usunięcia.

Obrazy: rozróżnij dangling i nieużywane

docker image ls --filter dangling=true
docker image prune

Pierwsze polecenie jest odczytem. Drugie usuwa domyślnie obrazy dangling, czyli bez tagu i bez powiązania z kontenerem. Przed potwierdzeniem sprawdź, czy nie zachowujesz takiego obrazu jako jedynego wyniku lokalnej kompilacji. Obraz prywatny lub własny nie musi być możliwy do ponownego pobrania.

Opcja -a rozszerza sprzątanie również na inne obrazy niepowiązane z żadnym kontenerem. Może zabrać wersję zachowaną do szybkiego powrotu lub pracy offline. Zastanów się, czy masz dostęp do rejestru i dokładnego wariantu obrazu. Tag „latest” nie gwarantuje odtworzenia tej samej zawartości w przyszłości.

Cache kompilacji usuwa się osobno

Jeśli głównym źródłem jest cache budowania, sprawdź używany builder. Dla Buildx dostępne jest:

docker buildx du

Po rozpoznaniu zbędnego cache odpowiednia operacja prune może zwolnić miejsce, lecz przyszłe kompilacje będą musiały odtworzyć usunięte elementy. W środowisku z kilkoma builderami potwierdź, który obejmuje polecenie. Nie usuwaj jednocześnie kontenerów i obrazów, jeśli problemem jest wyłącznie cache.

Dlaczego nie zaczynać od system prune z dodatkami?

docker system prune łączy usuwanie zatrzymanych kontenerów, niewykorzystywanych sieci, obrazów dangling i cache budowania. Domyślnie nie usuwa wolumenów, lecz nadal może skasować dane z warstwy kontenera. Dodatkowe opcje zwiększają zakres: -a obejmuje więcej obrazów, a --volumes anonimowe nieużywane wolumeny.

Nieużywany wolumen może być pozostałością po potrzebnej aplikacji, która chwilowo nie ma kontenera. Nazwane wolumeny mają również własne reguły sprzątania i opcje rozszerzające zakres. Nie uruchamiaj hurtowego usuwania jako cotygodniowego zadania bez planu retencji oraz kopii. Najpierw ustal nazwę, pochodzenie i zawartość danych, które mają zostać usunięte.

Sprawdź oszczędność i możliwość dalszej pracy

Po wybranej operacji ponownie odczytaj docker system df -v i wolne miejsce systemu plików. Sprawdź potrzebne kontenery oraz zwykłą funkcję aplikacji. W Docker Desktop zmniejszenie zajętości wewnętrznej nie musi od razu zmniejszyć fizycznego pliku dysku wirtualnego; to osobny etap zarządzania pamięcią masową.

Nie usuwaj ręcznie katalogów danych Dockera i jego plików wewnętrznych. Korzystaj z obsługiwanych poleceń i zachowaj sprawdzony backup przed skasowaniem danych aplikacji. Dobrze zakończone porządki dają odzyskane miejsce oraz działające potrzebne projekty, nie tylko krótszą listę kontenerów.