Docker zajmuje miejsce na moim Macu

Docker Desktop trzyma wszystko w jednym pliku. Rośnie przy każdej kompilacji, a usuwanie obrazów nie czyni go mniejszym. Oto dlaczego i co naprawdę odzyskuje miejsce.

Bezpłatne pobieranie i skanowanie. Czyszczenie wymaga licencji: jedna płatność na komputer, Mac lub Windows.

Przestrzeń dyskowa: mapa drzewa folderu domowego o rozmiarze 297,8 GB według kategorii

Gdzie jest miejsce

Na Macu Docker Desktop trzyma wszystko w linuksowej maszynie wirtualnej, a cały dysk tej maszyny to jeden plik rzadki:

~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

Sprawdź jego prawdziwy rozmiar na dysku — nie logiczny, który zawsze jest maksimum, na jakie pozwoliłeś Dockerowi:

du -h -d0 ~/Library/Containers/com.docker.docker/Data/vms/0/data/

Dlaczego usuwanie obrazów go nie zmniejsza

Usuń obraz, a miejsce zwolni się tylko wewnątrz maszyny wirtualnej. Plik na twoim Macu pozostaje tak duży, jak był, bo macOS już mu tyle przydzielił. Nowsze wersje Docker Desktop wysyłają TRIM z wnętrza maszyny wirtualnej, dzięki czemu macOS może odzyskać zwolnione bloki, ale dzieje się to według harmonogramu Dockera, a nie w chwili, gdy robisz prune. Do tego czasu docker system df zgłasza gigabajty zwolnionego miejsca, podczas gdy Finder nie pokazuje żadnej zmiany.

Odzyskiwanie miejsca

Po kolei: najpierw to, co najmniej niszczące.

1. Zapytaj Dockera o jego własne sumy

Zawsze zacznij tutaj. Rozdziela obrazy, kontenery, woluminy i pamięć podręczną kompilacji i mówi, ile z każdego da się odzyskać.

docker system df -v

2. Wyczyść pamięć podręczną kompilacji

Na maszynie, która regularnie buduje obrazy, to zwykle największa pojedyncza pozycja i najbezpieczniejsza do usunięcia — jedynie spowalnia kolejną kompilację.

docker builder prune -a

3. Usuń to, co naprawdę nieużywane

Zatrzymane kontenery, osierocone obrazy i nieużywane sieci:

docker system prune

Dodaj -a aby usunąć także każdy obraz nieużywany przez działający kontener — to znaczy, że pobierzesz je później ponownie. Poniższe dodaj --volumes tylko jeśli masz pewność: w woluminach bazy danych trzymają swoje dane, i to jedyne polecenie na tej stronie, które niszczy coś, czego nie pobierzesz ponownie.

4. Wypisz woluminy, zanim ich dotkniesz

Zobacz, co naprawdę by zniknęło:

docker volume ls
docker volume ls -f dangling=true

5. Spraw, by macOS odzyskał plik

Po prune Docker Desktop ma przewidziany sposób na zwrócenie zwolnionych bloków: Ustawienia → Zasoby → Zaawansowane → Wykorzystanie dysku, albo zamknięcie i ponowne otwarcie Docker Desktop, co przy starcie wyzwala TRIM. Daj mu minutę i sprawdź rozmiar pliku ponownie, zanim uznasz, że nie zadziałało.

6. Obniż limit dysku

W Ustawienia → Zasobylimit dysku wirtualnego określa, jak duży może urosnąć Docker.raw. Obniżenie go samo w sobie niczego nie zwalnia, ale zakłada problemowi sufit. To, że podniosłeś go „na wszelki wypadek”, jest powodem, dla którego plik doszedł do 64 GB.

7. Ostateczność

Ustawienia → Rozwiązywanie problemów → Clean / Purge data całkowicie resetuje dysk maszyny wirtualnej i sprowadza plik prawie do zera. Usuwa każdy obraz, kontener i wolumin, jaki masz. Użyj, gdy nic innego nie pomogło i wiesz, co jest w twoich woluminach.

Nie usuwaj Docker.raw w Finderze. To nie jest plik pamięci podręcznej — to dane całej instalacji Dockera, a usunięcie go przy działającym Dockerze może zostawić maszynę wirtualną w stanie, który i tak będzie wymagał resetu.

Warto też sprawdzić

Docker rzadko bywa sam

Na Macu, na którym Docker doszedł do 50 GB, DerivedData Xcode i lokalne modele AI są zwykle tuż za nim. Jeśli odzyskujesz miejsce, warto zmierzyć cały dysk raz, zamiast naprawiać po jednej rzeczy naraz. Pełna lista

Na Linuksie nie ma pliku obrazu

Na Linuksie Docker zapisuje wprost do /var/lib/docker, więc prune zwalnia miejsce natychmiast i nic z powyższego problemu z TRIM nie ma zastosowania. Sprzątanie dysku na Linuksie

Pytania

Czy bezpiecznie jest usunąć Docker.raw?

Nie z Findera i nie przy działającym Dockerze. Ten jeden plik to każdy obraz, kontener i wolumin, jaki masz. Jeśli naprawdę chcesz zacząć od zera, użyj w Docker Desktop Rozwiązywanie problemów → Clean / Purge data, co robi to samo w sposób, o którym Docker wie.

Dlaczego docker system prune mówi, że zwolnił 20 GB, a nic się nie zmieniło?

Bo zwolnił 20 GB wewnątrz systemu plików maszyny wirtualnej, a nie na twoim Macu. Plik zachowuje rozmiar, dopóki nie wykona się TRIM i macOS nie odzyska bloków. Zamknięcie i ponowne otwarcie Docker Desktop zwykle to wyzwala.

Czy docker system prune usunie moje bazy danych?

Tylko jeśli dodasz --volumes. Bez tej flagi zostawia woluminy w spokoju. Z nią znika każdy wolumin niepodłączony do kontenera, a wolumin zatrzymanej bazy liczy się jako niepodłączony.

Jak duży powinien być Docker.raw?

Nie ma dobrej odpowiedzi, ale na maszynie z kilkoma aktywnymi projektami 15 do 25 GB jest normą, a 60 GB oznacza, że pamięć podręczna kompilacji nigdy nie była czyszczona. Sprawdź poleceniem docker system df -v zanim uznasz, że chodzi o obrazy.