Geliştirici depolama rehberi

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ığı.

14 gün ücretsiz deneme, kart gerekmez. Ardından 3 bilgisayar için tek seferlik 15 dolar, macOS ve Linux.

Bytesweep ağaç haritası, Docker disk kalıbının bir Mac ev klasörüne hâkim olduğunu gösteriyor

Yer nerede

macOS'ta Docker Desktop bir Linux sanal makinesi çalıştırır ve o sanal makinenin tüm dosya sistemi Mac'inizde 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ı kaldırmak, sanal makinenin dosya sisteminin içinde blokları serbest bırakır, ama Mac'inizdeki dosya boyutunu korur — o kadarını macOS'tan çoktan almıştır. Yeni Docker Desktop sürümleri sanal makinenin içinden TRIM gönderir ve bu, macOS'un serbest kalan blokları geri almasını sağlar; ama bu, siz prune çalıştırdığınız anda değil Docker'ın kendi takvimine göre olur. O ana 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'ın ne kullandığını düşündüğünü görün

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

Docker nadiren tek başınadır

Bu sayfadaki her komutu çalıştırabilirsiniz; aynı Mac'te Xcode DerivedData ve birkaç unutulmuş model ağırlığı genelde en az onun kadar büyüktür. Bytesweep, Docker'ın diskteki gerçek boyutunu on saniyelik tek bir geçişte hepsinin yanında ölçer; böylece diski aracı aracı kovalamak yerine bir kerede toparlarsınız.

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 →

Docker'ı diğer her şeyin yanında görün

Bytesweep, Docker'ın diskteki gerçek boyutunu ölçer, onu Xcode, simülatörler, node_modules ve model ağırlıklarının yanında gösterir ve birimlerinize dokunmadan neyin temizlenmesinin güvenli olduğunu işaretler.

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: