Container’lar ve sanal makineler (VM), her ikisi de “izolasyon” vaat eder ama bunu tamamen farklı katmanlarda yaparlar. Bu farkı anlamak, ne zaman hangisini seçeceğinizi bilmenin anahtarıdır.

Sanal makine nasıl çalışır?

Bir sanal makine, bir hipervizör (VMware, VirtualBox, KVM gibi) aracılığıyla fiziksel donanımı taklit eder ve her VM’in üzerine tam bir işletim sistemi kurulur — kendi çekirdeği, kendi sürücüleri, kendi her şeyi ile. Bu, güçlü bir izolasyon sağlar ama ciddi bir kaynak maliyeti getirir: her VM gigabaytlarca disk alanı kaplar ve açılması dakikalar sürebilir.

Container nasıl çalışır?

Container ise ana makinenin (host) işletim sistemi çekirdeğini paylaşır. Linux’un namespaces özelliği süreçleri, ağı, dosya sistemini birbirinden izole ederken; cgroups özelliği CPU ve bellek gibi kaynakları sınırlandırır. Sonuç: container’lar saniyeler içinde başlar ve genellikle sadece megabaytlarca yer kaplar.

→

Basit bir benzetme: VM, içinde kendi mutfağı, banyosu ve elektrik hattı olan bağımsız bir ev inşa etmektir. Container ise aynı binadaki bağımsız daireler gibidir — bina altyapısını (çekirdeği) paylaşırlar ama her dairenin kendi kilidi ve kendi eşyaları vardır.

Karşılaştırma tablosu

Özellik Sanal Makine (VM) Container
İzolasyon seviyesi Donanım seviyesi (hipervizör) İşletim sistemi seviyesi (çekirdek)
Başlangıç süresi Dakikalar Saniyeler, çoğu zaman milisaniyeler
Disk boyutu Genellikle GB seviyesinde Genellikle MB seviyesinde
İşletim sistemi Her VM kendi çekirdeğini taşır Host çekirdeğini paylaşır
Yoğunluk (bir sunucuda kaç tane) Onlarca Yüzlerce – binlerce
Tipik kullanım Farklı işletim sistemleri, güçlü izolasyon gereken senaryolar Mikroservisler, CI/CD, hızlı ölçeklenen uygulamalar

Birbirini dışlamazlar

Pratikte çoğu production ortamı ikisini bir arada kullanır: bulut sağlayıcılar sanal makineler üzerinde çalışan Kubernetes küme node’larında container’lar barındırır. VM, alt seviyede güçlü bir güvenlik sınırı çizerken; container, o sınırın içinde uygulamaları hızlı ve verimli şekilde çalıştırır.

Hangisini ne zaman seçmeli?

  • Farklı işletim sistemi çekirdeklerine (örn. Windows ve Linux’u aynı fiziksel sunucuda) ihtiyacınız varsa: VM.
  • Güçlü, donanım seviyesinde kiracı izolasyonu gereken çok kiracılı (multi-tenant) sistemlerde: VM.
  • Hızlı dağıtım, yatay ölçekleme ve mikroservis mimarisi istiyorsanız: Container.
  • Geliştirme ortamınızı production ile birebir eşleştirmek istiyorsanız: Container.

Şimdi temel farkları bildiğimize göre, sırada kendi Docker imajınızı nasıl oluşturacağınız var: bir sonraki yazıda Dockerfile yazımına giriyoruz.