Docker Mac'imde yer kaplıyor

Docker Desktop her şeyi tek bir dosyada tutar. Her derlemede büyür ve kalıpları silmek onu küçültmez. İşte nedeni ve alanı gerçekte neyin geri kazandığı.

İndirmesi ve taraması ücretsiz. Temizleme bir lisans gerektirir: bilgisayar başına tek ödeme, Mac veya Windows.

Depolama: 297,8 GB'lık bir ana klasörün kategorilere göre ağaç haritası

Yer nerede

Mac'te Docker Desktop her şeyi bir Linux sanal makinesinin içinde tutar ve o makinenin tüm diski tek bir seyrek dosyadır:

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

Diskteki gerçek boyutuna bakın — mantıksal boyutuna değil; o her zaman Docker'ın kullanmasına izin verdiğiniz üst sınırdır:

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

Kalıpları silmek onu neden küçültmüyor

Bir kalıbı sildiğinizde alan yalnızca sanal makinenin içinde boşalır. Mac'inizdeki dosya eskisi kadar büyük kalır, çünkü macOS ona o kadar alanı çoktan vermiştir. Yeni Docker Desktop sürümleri sanal makinenin içinden TRIM gönderir, bu da macOS'un boşalan blokları geri almasını sağlar; ancak bu, prune yaptığınız anda değil Docker'ın kendi takvimine göre gerçekleşir. O zamana kadar docker system df gigabayt boşaldığını bildirirken Finder hiçbir değişiklik göstermez.

Alanı geri almak

Sırayla: en az yıkıcı olan başta.

1. Docker'a kendi toplamlarını sorun

Her zaman buradan başlayın. Kalıpları, konteynerleri, birimleri ve derleme önbelleğini ayırır ve her birinin ne kadarının geri kazanılabileceğini söyler.

docker system df -v

2. Derleme önbelleğini temizleyin

Düzenli olarak kalıp derleyen bir makinede bu genellikle en büyük tek kalemdir ve kaldırılması en güvenli olanıdır — yalnızca bir sonraki derlemeyi yavaşlatır.

docker builder prune -a

3. Gerçekten kullanılmayanları temizleyin

Durdurulmuş konteynerler, boşta kalan kalıplar ve kullanılmayan ağlar:

docker system prune

Çalışan bir konteynerin kullanmadığı her kalıbı da kaldırmak için -a ekleyin — bu, onları sonradan yeniden çekmek demektir. --volumes seçeneğini yalnızca eminseniz ekleyin: veritabanları verilerini birimlerde tutarve bu, bu sayfada yeniden indiremeyeceğiniz bir şeyi yok eden tek komuttur.

4. Dokunmadan önce birimleri listeleyin

Gerçekte neyin gideceğini kontrol edin:

docker volume ls
docker volume ls -f dangling=true

5. macOS'un dosyayı geri kazanmasını sağlayın

Temizlikten sonra Docker Desktop'ın serbest kalan blokları geri vermek için desteklenen bir yolu var: Ayarlar → Kaynaklar → Gelişmiş → Disk kullanımıya da Docker Desktop'tan çıkıp yeniden açmak; bu, açılışta TRIM'i tetikler. Bir dakika bekleyin ve işe yaramadığına karar vermeden önce dosya boyutunu yeniden kontrol edin.

6. Disk sınırını düşürün

Şuraya bakın: Ayarlar → Kaynaklarbölümünde sanal disk sınırı, Docker.raw'un ne kadar büyümesine izin verildiğini belirler. Onu düşürmek tek başına bir şey boşaltmaz ama sorunu sınırlar. "Ne olur ne olmaz" diye yükseltmek, dosyanın en baştan 64 GB'a ulaşmasının nedenidir.

7. Son çare

Ayarlar → Sorun Giderme → Clean / Purge data sanal makinenin diskini tümüyle sıfırlar ve dosyayı neredeyse sıfıra döndürür. Sahip olduğunuz her kalıbı, konteyneri ve birimi siler. Bunu başka hiçbir şey işe yaramadığında ve birimlerinizde ne olduğunu bildiğinizde kullanın.

Docker.raw'u Finder'da silmeyin. O bir önbellek dosyası değil, Docker kurulumunun tüm verisidir; Docker çalışırken kaldırmak sanal makineyi zaten sıfırlama gerektiren bir duruma sokabilir.

Ayrıca kontrol etmeye değer

Docker nadiren yalnız gelir

Docker'ın 50 GB'a ulaştığı Mac'te, Xcode'un DerivedData'sı ve yerel yapay zekâ modelleri genelde hemen arkasındadır. Yer kazanıyorsanız, tek tek düzeltmek yerine tüm diski bir kez ölçmeye değer. Tam liste

Linux'ta kalıp dosyası yoktur

Linux'ta Docker doğrudan /var/lib/dockeriçine yazar; bu yüzden prune yeri hemen boşaltır ve yukarıdaki TRIM sorunu hiç yaşanmaz. Linux disk temizliği

Sorular

Docker.raw'u silmek güvenli mi?

Finder'dan değil ve Docker çalışırken hiç değil. O tek dosya, sahip olduğunuz her kalıp, konteyner ve birimdir. Gerçekten sıfırdan başlamak istiyorsanız Docker Desktop'ın Sorun Giderme → Clean / Purge data seçeneğini kullanın; aynı işi Docker'ın haberdar olduğu bir biçimde yapar.

docker system prune 20 GB boşalttığını söylerken neden hiçbir şey değişmiyor?

Çünkü o 20 GB'ı Mac'inizde değil, sanal makinenin dosya sisteminin içinde boşalttı. TRIM çalışıp macOS blokları geri alana kadar dosya boyutunu korur. Docker Desktop'tan çıkıp yeniden açmak bunu genelde tetikler.

docker system prune veritabanlarımı siler mi?

Yalnızca --volumeseklerseniz. Bu bayrak olmadan birimlere dokunmaz. Onunla birlikte, bir konteynere bağlı olmayan her birim gider ve durdurulmuş bir veritabanının birimi bağlı sayılmaz.

Docker.raw ne kadar büyük olmalı?

Doğru bir cevap yok, ama birkaç etkin projesi olan bir makinede 15 ila 25 GB normaldir; 60 GB ise derleme önbelleğinin hiç temizlenmediği anlamına gelir. docker system df -v Kalıplar olduğunu varsaymadan önce şununla kontrol edin: