Docker Desktop Temizlik & Bakım Aracı
Windows üzerinde Docker Desktop kullananlar için geliştirilmiş, tek tıkla çalışan kapsamlı bir temizlik ve disk kazanım aracıdır. Docker kaynaklarını temizlemenin yanı sıra WSL2 backend'inin kullandığı .vhdx sanal disk dosyalarını da sıkıştırarak Windows'a disk alanı iade eder.
Dosya Yapısı
docker-cleanup/
├── docker-cleanup.bat ← Çift tıkla başlatıcı (buradan başlayın)
└── docker-cleanup.ps1 ← Ana temizlik scripti (PowerShell)
İki dosyanın aynı klasörde bulunması zorunludur.
Gereksinimler
| Gereksinim | Açıklama |
|---|---|
| Windows 10/11 | WSL2 destekli |
| Docker Desktop | WSL2 backend aktif |
| PowerShell 5.1+ | Windows ile birlikte gelir |
| Yönetici yetkisi | Yalnızca VHDX shrink adımı için gerekli |
Docker temizlik adımları (1-5) normal kullanıcı yetkisiyle çalışır.
VHDX shrink (adım 6) için Yönetici yetkisi şarttır.
Hızlı Başlangıç
Yöntem 1 — Çift Tıkla (Önerilen)
docker-cleanup.bat dosyasına sağ tıklayın → "Yönetici olarak çalıştır" seçin.
Açılan menüden istediğiniz modu seçin:
====================================================
Docker Desktop - Temizlik, Bakim ve VHDX Shrink
====================================================
Yetki : YONETICI - VHDX shrink AKTIF
====================================================
[1] Standart temizlik + VHDX shrink (7 gunluk filtre)
[2] Hizli temizlik + VHDX shrink (2 gunluk filtre)
[3] Volume dahil tam temizlik (DIKKATLI!)
[4] Sadece goster - dry-run (hicbir sey silinmez)
[5] Cikis
Yöntem 2 — PowerShell'den Doğrudan
# Dosyayı önce güven listesine alın (bir kez yeterli)
Unblock-File .\docker-cleanup.ps1
# Standart çalıştırma
.\docker-cleanup.ps1
# Yönetici PowerShell'inde (VHDX shrink dahil)
.\docker-cleanup.ps1 -Hours 168
Parametreler
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
-Hours |
int |
168 |
Bu saatten eski kaynakları temizle (168 = 7 gün) |
-All |
switch |
kapalı | Volume temizliğini de dahil et |
-DryRun |
switch |
kapalı | Hiçbir şeyi silme, sadece raporu göster |
Parametre Örnekleri
# Son 2 günden eski kaynakları temizle
.\docker-cleanup.ps1 -Hours 48
# Volume dahil tam temizlik
.\docker-cleanup.ps1 -All
# Ne kadar alan kazanılacağını önce gör, hiçbir şeyi silme
.\docker-cleanup.ps1 -DryRun
# Volume dahil, 3 günlük filtre, dry-run
.\docker-cleanup.ps1 -All -Hours 72 -DryRun
Çalışma Akışı (8 Adım)
Script çalıştırıldığında aşağıdaki adımları sırayla uygular.
Adım 0 — Başlangıç Raporu
Script başlamadan önce mevcut durumu gösterir:
docker system dfçıktısı (konteyner, imaj, volume, cache boyutları)%LOCALAPPDATA%\Docker\wsl\disk\altındaki tüm.vhdxdosyaları ve boyutları
Adım 1 — Konteyner Temizliği
exited, dead ve hiç başlatılmamış created durumundaki konteynerleri bulur ve kaldırır. -Hours filtresine göre yalnızca belirtilen süreden eski olanlar silinir. Çalışan (running) konteynerlere dokunulmaz.
docker container prune --force --filter "until=168h"
Adım 2 — İmaj Temizliği
Hiçbir konteynere bağlı olmayan imajları kaldırır. Hem dangling (tag'siz) hem de kullanılmayan tüm imajlar hedeflenir.
docker image prune -a --force --filter "until=168h"
Aktif konteynerlerin kullandığı imajlar korunur.
Adım 3 — Build Cache Temizliği
docker build işlemlerinden kalan katman önbelleklerini temizler. Zamanla GB'larca yer kaplayabilir.
docker builder prune --force --filter "until=168h"
Adım 4 — Ağ Temizliği
Hiçbir konteynere bağlı olmayan özel Docker ağlarını kaldırır. bridge, host ve none gibi yerleşik ağlar korunur.
docker network prune --force
Adım 5 — Volume Temizliği (opsiyonel, -All ile aktif)
Yalnızca -All parametresiyle çalışır. Herhangi bir konteynere bağlı olmayan volume'ları kaldırır. Çalıştırmadan önce onay ister.
docker volume prune --force
Uyarı: Volume'lar veritabanı verileri, yapılandırma dosyaları gibi kalıcı içerik barındırabilir. Bu adımı kullanmadan önce yedek alın.
Adım 6 — WSL2 Kapatma + VHDX Shrink (Yönetici yetkisi gerekir)
Bu adım Docker'ın WSL2 backend'inin kullandığı sanal disk dosyalarını (ext4.vhdx, data.vhdx vb.) sıkıştırarak Windows'a fiziksel disk alanı iade eder.
Neden gerekli?
docker system prune Docker içindeki verileri siler ama .vhdx dosyası Windows gözünden küçülmez. VHDX dinamik olarak büyür, ancak içi boşalsa bile Windows'a otomatik yer iade etmez. Bu adım bu sorunu çözer.
İşlem sırası:
1. wsl --shutdown ← WSL2 ve tüm distro'ları kapat
2. diskpart
select vdisk file="...\ext4.vhdx"
attach vdisk readonly
compact vdisk ← Boş blokları geri ver
detach vdisk
3. Docker Desktop'ı yeniden başlat
Script her .vhdx dosyası için önce/sonra boyutu karşılaştırır ve kazanılan alanı raporlar.
Adım 7 — Sonuç Raporu
Tüm adımlar tamamlandıktan sonra:
docker system dfile güncel Docker disk kullanımı- Her
.vhdxdosyasının yeni boyutu
VHDX Dosyaları Hakkında
Docker Desktop WSL2 backend kullandığında verilerini şu konumda saklar:
%LOCALAPPDATA%\Docker\wsl\disk\
ext4.vhdx ← Ana Docker verisi (imaj katmanları, konteynerler)
docker-desktop-data.vhdx ← Ek veri (yapılandırmaya göre değişir)
Bu dosyalar büyüdükçe Windows'ta ciddi disk baskısı oluşturur. Docker temizliği + VHDX shrink kombinasyonu uygulandığında 5 GB ile 30 GB arasında alan kazanımı görülmesi normaldir.
Güvenlik Notları
ExecutionPolicy Uyarısı
Script ilk çalıştırmada PowerShell güvenlik uyarısı gösterebilir. Bunu kalıcı olarak çözmek için:
Unblock-File .\docker-cleanup.ps1
.bat üzerinden çalıştırıldığında bu adım otomatik olarak atlanır (-ExecutionPolicy Bypass).
Neye Dokunulmaz
Script asla şunlara dokunmaz:
- Çalışan (
running) konteynerler - Aktif konteynerlerin kullandığı imajlar
bridge,host,nonegibi yerleşik Docker ağları-Allparametresi verilmediği sürece volume'lar- Docker Desktop yapılandırma dosyaları
- WSL2 distro verileri (yalnızca Docker'ın kendi
.vhdxdosyaları hedeflenir)
Dry-Run Modu
Emin olmadığınızda her zaman önce dry-run ile başlayın:
.\docker-cleanup.ps1 -DryRun
Hiçbir silme işlemi yapılmaz; yalnızca ne yapılacağı ekrana yazdırılır.
Sık Karşılaşılan Durumlar
Docker Desktop çalışmıyor hatası
Script başlangıçta docker info komutuyla Docker'ın erişilebilir olup olmadığını kontrol eder. Docker Desktop kapalıysa hata mesajı gösterir ve çıkar. Çözüm: Docker Desktop'ı açın ve birkaç saniye bekleyip tekrar çalıştırın.
VHDX shrink adımı atlanıyor
Script yönetici yetkisiyle çalışmıyorsa adım 6 otomatik olarak atlanır ve uyarı verilir. Çözüm: .bat dosyasına sağ tıklayın → "Yönetici olarak çalıştır".
VHDX boyutu değişmedi
Dosya zaten optimize durumdaysa diskpart compact herhangi bir alan kazanımı sağlamaz ve script bunu raporlar. Bu normal bir durumdur.
Volume temizliği sonrası uygulama hatası
-All ile volume silindikten sonra bazı uygulamalar başlatılamayabilir. Çözüm: İlgili volume'ları yedekleyin veya uygulamayı yeniden yapılandırın.
Önerilen Kullanım Sıklığı
| Senaryo | Komut | Sıklık |
|---|---|---|
| Günlük geliştirme | Standart (seçenek 1) | Haftada 1 |
| Yoğun build dönemi | -Hours 48 (seçenek 2) |
Günlük |
| Disk dolmak üzere | -All (seçenek 3) |
Gerektiğinde |
| Yeni başlarken | -DryRun (seçenek 4) |
İlk kullanımda |
Lisans
Bu araç hAtayolu projesi kapsamında geliştirilmiştir.
Kişisel ve ticari kullanıma serbesttir.