Container ile sanal makine (VM) arasındaki fark nedir?
Cevap
| Container | Sanal makine | |
|---|---|---|
| Sanallaştırma seviyesi | İşletim sistemi (çekirdek paylaşılır) | Donanım (hypervisor) |
| İçerdiği | Uygulama + bağımlılıklar | Tam bir işletim sistemi + uygulama |
| Boyut | MB seviyesi | GB seviyesi |
| Açılış süresi | Saniye altı / saniyeler | Dakikalar |
| İzolasyon | Süreç seviyesi, daha zayıf | Güçlü, ayrı çekirdek |
| Farklı işletim sistemi | Hayır, host çekirdeği kullanılır | Evet (Linux üstünde Windows) |
Container nasıl izole edilir?
Container aslında host üzerinde çalışan, Linux çekirdek özellikleriyle sınırlandırılmış bir süreçtir:
- Namespaces: sürecin gördüğü dünyayı ayırır (PID, network, mount, user, hostname).
- cgroups: CPU, bellek, I/O kullanımını sınırlar.
- Union filesystem (OverlayFS): image katmanlarını üst üste bindirir; katmanlar container'lar arasında paylaşılır.
Temel Docker kavramları
- Image: salt okunur şablon (sınıf gibi).
- Container: image'ın çalışan örneği (nesne gibi). Üzerine yazılabilir ince bir katman eklenir; container silinince bu katman da gider. Kalıcı veri için volume kullanılır.
- Registry: image deposu (Docker Hub, GHCR, ECR).
Ne zaman hangisi?
Container: mikroservisler, CI ortamları, "benim makinemde çalışıyordu" sorununu ortadan kaldırmak, hızlı ölçekleme. VM: güçlü izolasyon gereken çok kiracılı ortamlar, farklı işletim sistemi ihtiyacı. Pratikte ikisi birlikte kullanılır: bulutta container'lar genellikle VM'lerin üzerinde çalışır.
macOS ve Windows'ta Docker Desktop, Linux çekirdeği için arka planda hafif bir VM çalıştırır.
İlgili Docker & DevOps soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.