Bir XDA yazarı tüm homlabını bir hafta boyunca WSL konteynerlerinde çalıştırdı ve “çok fazlası” bozulmadığını buldu. Bu dürüst bir değerlendirmedir: WSL 2 olgunlaştı, Docker Desktop ağırlaştı ve homelab işinin çoğu Windows üzerinde Linux dağıtımı içinde Docker Desktop VM maliyeti olmadan güzel çalışıyor. Bunlar masaüstü bilgisayarda Docker’dan WSL konteyner göçü için en iyi uygulamalardır, bir Windows makinesinin koltuk başına lisans ödemeden veya daemon çalıştırmak için ikinci VM başlatmadan konteyner barındırmasını sağlayan araçlardır.
Windows 11 24H2’de WSL 2 içinde yedi aracı AMD Ryzen dizüstü bilgisayarı ve Nvidia iş istasyonuyla test ettik. Her seçim standart Ubuntu 24.04 veya Debian 12 WSL görüntüsüne yüklenir, Windows yeniden başlatmayı sağlar ve Docker CLI’yi tamamen değiştirir veya arkasında kalır. Farklar GPU passthrough, systemd desteği ve her aracın Windows-Linux dosya sistemi dikişini nasıl işlediği etrafında ortaya çıkar ve bu da çoğu göçü başarısız kılar.
WSL konteyner yığınında ne aramalı
- systemd açık olmak WSL 2. Modern konteyner araçları pid 1’in systemd olmasını ister.
- Mümkün olduğunda köksüz. Dağıtım içinde root olarak çalışan daemon yok.
- GPU erişimi. Nvidia CDI veya eğitim ve çıkarımın çalışması için CUDA-on-WSL yolu.
- Linux tarafında kalıcı hacimler. Bağlama takmaları ext4 dosya sisteminde kalır,
/mnt/cdeğil. - Docker-CLI uyumluluğu. Mevcut
dockervedocker composekomutları göçü sırasında çalışmaya devam eder. - Windows login sırasında otomatik başlatma. Task Scheduler veya WSL autostart girişi manuel
wsl -dolmadan hizmetleri çalışır durumda tutar.
Hızlı karşılaştırma
| Uygulama | En iyi kullanım | Platformlar | Ücretsiz plan | Ücretli katman | Derecelendirme |
|---|---|---|---|---|---|
| WSL 2 | Diğer her şeyin oturduğu dağıtım katmanı | Windows 10, 11 | Tamamen ücretsiz | Hiçbiri | 4.8 |
| Podman | Daemon olmadan yerinde Docker CLI | Ubuntu, Debian, Fedora in WSL | Tamamen ücretsiz | Podman Desktop, ücretsiz | 4.7 |
| Rancher Desktop | Yönetilen Docker uyumlu yığın | Windows | Tamamen ücretsiz | Hiçbiri | 4.6 |
| Distrobox | Birden fazla Linux dağıtımı yan yana | Herhangi bir WSL dağıtımı | Tamamen ücretsiz | Hiçbiri | 4.7 |
| systemd-nspawn | Systemd’ye gömülü hafif OS konteynerler | Systemd’li WSL | Tamamen ücretsiz | Hiçbiri | 4.5 |
| nerdctl | Docker değişimi yeterli olduğunda containerd yerel CLI | Ubuntu, Debian, Fedora in WSL | Tamamen ücretsiz | Hiçbiri | 4.7 |
| Lima | Taşınabilirlik için yapılandırma dosyasından Linux VM’leri | Windows via WSL, macOS, Linux | Tamamen ücretsiz | Hiçbiri | 4.7 |
Uygulamalar
1. Konteynerler için WSL 2 — En iyi dağıtım katmanı
WSL 2 Windows’u uygulanabilir bir konteyner ana makinesine dönüştüren temeldir. /etc/wsl.conf içinde systemd bayrağı açık olduğunda, Ubuntu veya Debian kurulumu gerçek bir init’te önyükler, bu da Podman, nerdctl ve bu listedeki her şeyi açar. .wslconfig içinde Windows tarafı bellek sınırı çılgın konteynerların host’u tüketmesini önler ve son sürümlerdeki ağ modu localhost port dansını durdurur.
Başarısız olduğu yer: Çapraz dosya sistemi I/O yavaştır. Konteyner verilerini Linux ext4 tarafında tutun, /mnt/c/Users/... değil, yoksa Docker Desktop’ta 2 saniye alan bir compose burada 40 saniye alır.
Fiyatlandırma:
- Ücretsiz: Tamamen ücretsiz.
- Ücretli: Hiçbiri.
Platformlar: Windows 10 21H2 ve sonrası, Windows 11.
İndir: learn.microsoft.com/windows/wsl · github.com/microsoft/WSL
Sonuç: Önce systemd’yi açın, sonra konteyner aracı seçin. Aşağıdaki her şey bu adımı varsayar.
2. WSL için Podman — En iyi daemon’suz Docker CLI
Podman Docker uyumlu bir CLI, compose dosyaları için podman-compose ve köksüz çalışır gönderir. WSL Ubuntu görüntüsü içinde, dnf veya apt install podman ve alias docker=podman bir öğleden sonrada göçün çoğunu kapsar. Podman’ın pod primitifi Docker compose’dan Kubernetes’e daha iyi eşlenir, bu da gerçek bir orkestratöre yapılan nihai adımı daha az yeniden yazma yapar.
Başarısız olduğu yer: Bazı compose dosyaları Docker’a özgü söz dizimini kullanır ve podman-compose bunu kusurla işler. Podman Compose v2 çoğunu düzeltir; kenar durumları kalır.
Fiyatlandırma:
- Ücretsiz: Tamamen ücretsiz.
- Ücretli: Hiçbiri. Podman Desktop da ücretsizdir.
Platformlar: Ubuntu, Debian, Fedora ve WSL içindeki diğer dağıtımlar.
İndir: podman.io · github.com/containers/podman
Sonuç: Docker Desktop’u lisansı veya ayak izi için bırakanlar için doğru seçim.
3. WSL’de Rancher Desktop — En iyi yönetilen Docker uyumlu yığın
Rancher Desktop containerd ve Moby’yi Windows yükleyicisine sarar, kapakların altında WSL kullanır ve görüntüler ve Kubernetes için bir UI sağlar. Ayrıca seçiminizin konteyner motoru ile docker ve docker compose ikili dosyalarını ortaya çıkarır. Bu, ekibin geriye kalan kısmı docker ün işe yaramasını beklediğinde Docker Desktop ikamesini en sorunsuz yapar.
Başarısız olduğu yer: RAM bütçesi WSL içinde ham Podman’dan daha yüksektir çünkü Rancher Desktop WSL dağıtımının üstünde kendi yardımcı VM yapısını çalıştırır.
Fiyatlandırma:
- Ücretsiz: Tamamen ücretsiz.
- Ücretli: Hiçbiri.
Platformlar: Windows 10, 11 (WSL 2 backend).
İndir: rancherdesktop.io · github.com/rancher-sandbox/rancher-desktop
Sonuç: Ekip Docker Desktop ikamesini istediğinde Rancher Desktop’u seçin, iş akışının tam olarak yeniden yazılmasını değil.
4. WSL’de Distrobox — En iyi çok dağıtım yan yana
Distrobox tam dağıtımları tutacak konteynerler oluşturur ve yönetir ve ana bilgisayar WSL görüntüsü ile entegre olur, böylece Fedora araçlarına ihtiyaç duyacak bir proje ve Ubuntu 20.04’e ihtiyaç duyacak başka bir proje aynı makinede yaşar. WSL altında, bu tek bir WSL dağıtımını küçük bir amaç yapılı ortamlar kümesinin başlatıcısına dönüştürür ve her biri kendi konteyner araçlarına, GPU erişimine ve paket yöneticisine sahiptir.
Başarısız olduğu yer: Kendi başına Docker ikamesi değil. Podman veya nerdctl yanında oturur ve “Eşleşen bir yapı ortamına ihtiyacım var” sorununu ele alır.
Fiyatlandırma:
- Ücretsiz: Tamamen ücretsiz.
- Ücretli: Hiçbiri.
Platformlar: Podman veya Docker ile herhangi bir WSL dağıtımı.
İndir: distrobox.it · github.com/89luca89/distrobox
Sonuç: Ayrı WSL görüntüleri çevirmeden “bir Windows kutusu üzerinde çok dağıtım” desenini ekler.
5. WSL’de systemd-nspawn — En iyi hafif OS konteynerler
systemd-nspawn systemd’nin kendi OS düzeyindeki konteynerler için sağladığı şeydir. Bu tam Docker ikamesi değildir, ancak WSL içinde dağıtım sandbox çalıştırmanın en hafif yoludur başka daemon olmadan. Tam init, cron ve systemd bus bekleyen eski iş yükleri, soyulmuş OCI konteynerinden nspawn içinde daha iyi davranır.
Başarısız olduğu yer: Görüntü kayıt defteri hikayesi yok. Kendi kök dosya sisteminizi getirirsiniz, genellikle debootstrap.
Fiyatlandırma:
- Ücretsiz: Tamamen ücretsiz.
- Ücretli: Hiçbiri.
Platformlar: systemd etkin WSL dağıtımları.
İndir: freedesktop.org/wiki/Software/systemd · GitHub üzerinde systemd/systemd
Sonuç: Tüm Linux sunucusu gibi davranmaya çalışan iş yükü için konteyner.
6. WSL’de nerdctl — En iyi containerd-native CLI
nerdctl containerd projesinin Docker uyumlu CLI’sidir ve betiklerin değişimi fark etmeyecek kadar docker ’e yakındır. WSL içinde, containerd’nin containerd sürümünden doğrudan yüklenmiş containerd ile iyi eşleşir, resimde Docker veya Podman yok. Bu kombinasyon Docker Desktop VM olmadan Windows üzerinde OCI konteynerler çalıştırmanın en ince yoludur.
Başarısız olduğu yer: Görüntü derlemeleri için Buildkit ekstra bir adım gerekir. Yapılandırıldıktan sonra nerdctl build davranır.
Fiyatlandırma:
- Ücretsiz: Tamamen ücretsiz.
- Ücretli: Hiçbiri.
Platformlar: Ubuntu, Debian, Fedora in WSL.
İndir: github.com/containerd/nerdctl · containerd.io
Sonuç: İş yüklerinizin zaten containerd’de çalışacağını biliyorsanız ve Docker ekstralarına ihtiyacınız yoksa doğru araç.
7. WSL’de Lima — Taşınabilirlik için en iyi VM’ler-as-config
Lima Linux VM’leri YAML dosyasında tanımlar ve macOS, Linux ve Windows’da WSL aracılığıyla aynı şekilde çalıştırır. Bu “konteyner ana bilgisayarını” geliştirici dizüstü bilgisayarı platformlar arasında geçse bile yeniden üretilebilir tutar. Bir ekip Lima yapılandırmasını paylaşabilir ve işletim sistemi ne olursa olsun herkes aynı containerd veya Docker kurulumunu alır.
Başarısız olduğu yer: Windows üzerinde Lima hala WSL’ye VM motoru olarak güvenir, bu nedenle temel WSL bellek ve ağ limitleri geçerlidir.
Fiyatlandırma:
- Ücretsiz: Tamamen ücretsiz.
- Ücretli: Hiçbiri.
Platformlar: Windows (WSL 2 üzerinden), macOS, Linux.
İndir: lima-vm.io · github.com/lima-vm/lima
Sonuç: Yapılandırma dosyası belirli konteyner motorundan daha fazla önem taşıdığında Lima’yı kullanın.
Doğru olanı seçme
- En az invazif göç isterseniz: Rancher Desktop,
dockerCLI’yi saklayın, arkasındaki motoru değiştirin. - Daemon istemiyor ve lisans sorusu istemiyor: systemd etkin WSL Ubuntu içinde Podman.
- Bir Windows kutusunda çok dağıtım gerekiyorsa: Podman’ın üstüne Distrobox.
- İş yükü init ile tam OS istiyorsa: WSL içinde systemd-nspawn.
- Ekip macOS, Linux ve Windows’u kullanıyorsa: Paylaşılan YAML yapılandırması ile Lima.
SSS
Docker Desktop olmadan WSL içinde Docker Compose dosyalarını çalıştırabilirim?
Evet. Docker Engine’i doğrudan systemd etkin WSL dağıtımı içine yükleyin, ya da Podman’ı podman-compose ile kullanın, ya da Rancher Desktop’u Moby motoru ile kullanın. Üçü de Docker Desktop VM olmadan docker-compose.yml dosyalarını çalıştırır.
WSL 2 konteynerler için Nvidia GPU’larını destekliyor mu?
Evet desteklenen Nvidia sürücülerinde. CUDA-on-WSL araç setini dağıtım içine yükleyin, Nvidia Container Toolkit ile GPU’yu ortaya koydun ve konteynerler onu görüyorlar. WSL üzerinde AMD desteği yeni ROCm derlemelerine ve belirli kartlara sınırlıdır.
Konteyner verilerini Windows sürücülerinde mi yoksa Linux tarafında mı saklayacağım?
Linux ext4 tarafında tutun. /mnt/c ’ ye bind takmaları 9P dosya sistemi dikişini geçer ve derlemeleri ve veritabanlarını emeklemeye yavaşlatır. Yalnızca kaynak düzenleme için Windows dosya sistemi erişimini kullanın.
WSL konteynerlerini Windows login sırasında otomatik olarak başlatmayı nasıl yaparım?
İki yol. Dağıtım içinde /etc/wsl.conf içine boot.command ekleyin (WSL 2 systemd ile bunu çalıştırır), veya login sırasında wsl -d Ubuntu -u root -- systemctl start yourservice.service çalıştıran Task Scheduler girişi ekleyin.
WSL 2, Docker Desktop üzerinde çalışan bir homelab için yeterince hızlı mı?
Çoğu homelab iş yükü için evet, ve sık sık daha hızlı çünkü yığında ekstra yardımcı VM yoktur. Veritabanları ve ağır I/O, veriler ext4 tarafında olduğunda en fazla yararlanır; hafif hizmetler hiçbir şekilde fark görmez.