🐳 Docker Disk Canavarını Dizginlemek: Windows, macOS ve Linux’ta Veri Taşıma Rehberi
Hepimiz o anı yaşadık: Projeler tıkır tıkır çalışıyor, konteynerler ayakta, her şey harika… Ta ki işletim sisteminiz “Diskte yer kalmadı” uyarısını yüzünüze çarpana kadar. Docker, doğası gereği imajları, container statelerini ve volumeleri biriktirmeyi çok sever. Zamanla varsayılan sürücünüzü (genellikle işletim sisteminin kurulu olduğu diski) tamamen yutabilir.
Bu rehberde, Docker verilerinizi (ve o devasa sanal diskleri) Windows, macOS ve Linux sistemlerinde varsayılan konumlarından alıp, geniş ve ferah başka bir diske nasıl taşıyacağınızı adım adım inceleyeceğiz.
🪟 1. Windows: WSL 2 Diskini Özgürleştirmek
Docker Desktop, Windows üzerinde artık varsayılan olarak WSL 2 (Windows Subsystem for Linux) kullanıyor. Bu mimari çok hızlı olsa da, verileri ext4.vhdx adlı sanal bir disk dosyasında, sistem dizininin derinliklerinde saklar.
Adım Adım Taşıma İşlemi:
1. Docker’ı Kapatın: Sistem tepsisinden Docker Desktop’a sağ tıklayıp “Quit” diyerek tamamen kapatın. 2. WSL Süreçlerini Durdurun: PowerShell’i açıp arka plandaki servisleri dondurun:
wsl --shutdown
3. Veriyi Dışa Aktarın (Export): Asıl yer kaplayan docker-desktop-data diskini, hedef diskinize (örneğin D:\Docker) bir .tar arşivi olarak çıkarın:
wsl --export docker-desktop-data "D:\Docker\docker-desktop-data.tar"
(Not: Diskinizin boyutuna göre bu işlem vakit alabilir, sabırlı olun.)
4. Eski Kaydı Silin: Veriyi güvene aldığımıza göre C: sürücüsündeki kaydı silebiliriz:
wsl --unregister docker-desktop-data
5. Yeni Konumdan İçeri Aktarın (Import): Tar dosyasını, yeni yuvasında tekrar WSL diski olarak hayata döndürün:
wsl --import docker-desktop-data "D:\Docker\Data" "D:\Docker\docker-desktop-data.tar" --version 2
Artık Docker’ı başlatabilirsiniz. Her şey çalışıyorsa, devasa .tar yedek dosyasını silebilirsiniz!
🍏 2. macOS: Apple Silicon ve Intel Mac’lerde Diski Taşımak
Özellikle Apple Silicon (M4 vb.) işlemcili modern cihazlarda Docker, Apple’ın Sanallaştırma Çerçevesi üzerinden çalışır ve verileri devasa bir Docker.raw dosyasında tutar. Mac tarafında terminalde symlink (sembolik link) ile uğraşmak sanal makineyi bozabileceğinden, en temiz yol kendi arayüzünü kullanmaktır.
Adım Adım Taşıma İşlemi:
- Hedef diskinizi (örneğin harici bir Thunderbolt SSD) Mac’inize bağlayın ve içinde bir Docker klasörü oluşturun.
- Docker Desktop‘ı açın ve sağ üstteki Ayarlar (Dişli İkonu) simgesine tıklayın.
- Sol menüden Resources -> Virtual disk sekmesine gidin.
- Disk image location başlığı altındaki Browse butonuna tıklayın.
- Yeni diskinizdeki hedef klasörü seçin.
- Apply & Restart butonuna tıklayın.
Docker, o devasa veri dosyasını güvenli bir şekilde yeni konuma taşıyacak ve arka planda servisi yeniden başlatacaktır. İşlem bu kadar!
🐧 3. Linux: Native Docker Engine (Daemon) Yapılandırması
Linux ortamında (özellikle sunucularda) arayüzlü Docker Desktop yerine genellikle doğrudan Docker Engine kullanılır. Docker, verileri varsayılan olarak /var/lib/docker dizininde tutar. Bunu yapılandırma dosyası ile değiştirmek en sağlıklı yöntemdir.
Adım Adım Taşıma İşlemi:
1. Servisi Durdurun: İşlem yaparken veri yazılmasını engellemek için servisi kapatın:
sudo systemctl stop docker
2. Verileri Yeni Diske Kopyalayın: Dosya izinlerini (permissions) bozmamak için cp yerine rsync kullanmak hayat kurtarır. Hedefin /mnt/yeni_disk/docker_data olduğunu varsayalım:
sudo rsync -aP /var/lib/docker/ /mnt/yeni_disk/docker_data/
3. Yapılandırma Dosyasını Düzenleyin: Docker’a yeni adresi göstermemiz gerekiyor. /etc/docker/daemon.json dosyasını favori editörünüzle açın (dosya yoksa oluşturun):
sudo nano /etc/docker/daemon.json
İçerisine şu satırları ekleyin:
{
"data-root": "/mnt/yeni_disk/docker_data"
}
4. Servisi Yeniden Başlatın ve Test Edin:
sudo systemctl start docker
Docker’ın doğru diske baktığını doğrulamak için docker info | grep "Docker Root Dir" komutunu çalıştırabilirsiniz. Her şey sorunsuzsa, eski /var/lib/docker klasörünü silebilirsiniz.
💡 Kapanış ve Bonus İpucu
Diski taşıdınız ve rahat bir nefes aldınız. Ancak Docker zamanla yine “dangling” (boşta kalan) imajlar ve kullanılmayan volumeler üretecektir. Haftada bir şu komutu çalıştırarak bahar temizliği yapmayı unutmayın:
docker system prune -a --volumes
Mutlu kodlamalar! 🚀