2026-04-11 14:06:14 +03:00
2026-04-11 14:06:14 +03:00

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

ı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 ı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 .vhdx dosyaları 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 df ile güncel Docker disk kullanımı
  • Her .vhdx dosyası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, none gibi yerleşik Docker ağları
  • -All parametresi verilmediği sürece volume'lar
  • Docker Desktop yapılandırma dosyaları
  • WSL2 distro verileri (yalnızca Docker'ın kendi .vhdx dosyaları 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'ıı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ç hOLOlu tarafndan geliştirilmiştir.

Description
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.
Readme 35 KiB
Languages
PowerShell 83.5%
Batchfile 16.5%