İçeriğe geç
Yeni yazı çıkınca e-posta · 4.812 abone 190 rehber · 78 ipucu · 58 komut RSS GitHub LinkedIn İletişim
Ara Ctrl K Bültene katıl
Tüm arşiv · 190 rehber →
Tüm araçlar · 75 üreteç →
Sanallaştırma

Sanal makine mi konteyner mi? Yalıtım ile hafiflik arasındaki seçim

İkisinin neyi sanallaştırdığı, yalıtım gücü farkı, başlangıç süresi, durum tutma ve neden çoğu ortamda birlikte kullanıldıkları.

Mustafa Çelik 25 Ağustos 2026 · 5 dk okuma

Bu ikisi sık sık birbirinin alternatifi gibi sunulur, oysa farklı derinlikte çalışırlar ve gerçek ortamların çoğunda birlikte kullanılırlar. Karar, “hangisi daha iyi” değil “bu iş yükü hangi yalıtımı gerektiriyor” sorusuna bakar.

Neyi sanallaştırıyorlar

Sanal makine donanımı sanallaştırır. Hipervizör, her sanal makineye kendi işlemcisi, belleği ve diski varmış gibi görünen bir ortam sunar. İçinde tam bir işletim sistemi, kendi çekirdeğiyle birlikte çalışır.

Konteyner işletim sistemini paylaşır. Ayrı bir çekirdek yoktur; tüm konteynerler ana makinenin çekirdeğini kullanır. Paketlenen şey yalnızca uygulama ve bağımlılıklarıdır.

Bu tek fark, aşağıdaki bütün farkları doğurur.

Yalıtım gücü

Sanal makinede yalıtım donanım düzeyindedir. Bir sanal makine çekirdeğini çökertse komşusu etkilenmez; farklı işletim sistemleri yan yana çalışabilir.

Konteynerde yalıtım çekirdek özellikleriyle sağlanır — ad alanları ve kaynak grupları. Güçlüdür ama ortak çekirdek bir paylaşılan yüzeydir: çekirdekteki bir açık, konteyner sınırını aşmanın yolu olabilir.

Pratik sonuç: birbirine güvenmeyen taraflara ait iş yükleri aynı çekirdeği paylaşmamalıdır. Çok kiracılı ortamlarda konteynerler genelde ayrı sanal makinelere dağıtılır.

Konteyner tarafında yalıtımı zayıflatan ayarlar da vardır — ayrıcalıklı kip, ana makine ağı, Docker soketinin bağlanması. Bunları yakalamak için Compose denetleyici aracını kullanabilirsiniz.

Boyut ve başlangıç süresi

Sanal makine tam bir işletim sistemi taşır: gigabaytlarca disk, saniyelerle ölçülen açılış.

Konteyner yalnızca uygulama katmanını taşır: onlarca ya da yüzlerce megabayt, milisaniyelerle ölçülen başlangıç.

Bu fark ölçeklemede belirleyicidir. Ani yük artışında saniyeler içinde yüz kopya açmak konteynerlerle mümkündür, sanal makinelerle değil.

Aynı fark yoğunluğa da yansır: bir sunucuda onlarca sanal makine çalışırken yüzlerce konteyner çalışabilir. Yoğunluk planını hesaplamak için VM yoğunlaştırma aracı var.

Durum tutmak

Konteynerler geçici olmak üzere tasarlanmıştır. Silinir, yeniden oluşturulur ve içindeki değişiklikler kaybolur. Bu, tutarlılık açısından bir özelliktir — her kopya aynı imajdan doğar.

Durum tutması gereken iş yükleri için ayrı birimler bağlanır. Bu çalışır, ama veritabanları gibi disk davranışına duyarlı sistemlerde ek dikkat gerektirir.

Sanal makine ise doğal olarak durumludur: diski kalıcıdır, yapılandırması içinde yaşar. Uzun ömürlü ve elle bakım gören sistemler için hâlâ rahat seçenektir.

Taşınabilirlik ve “bende çalışıyordu”

Konteynerin en somut kazancı, çalışma ortamını uygulamayla birlikte paketlemesidir. Aynı imaj geliştiricinin makinesinde, test ortamında ve üretimde aynı bağımlılıklarla çalışır.

Bu, ortam farklarından doğan sorunların büyük kısmını ortadan kaldırır. Ama imajın nasıl kurulduğu önemlidir: sabitlenmemiş etiketler ve gereksiz kök yetkileri aynı avantajı geri alır.

İmaj denetimi için Dockerfile denetleyici aracı var.

Hangisi nereye

Sanal makine: eski uygulamalar, farklı işletim sistemi gerektiren yükler, çekirdek düzeyinde erişim isteyen yazılımlar, güçlü yalıtım gereken çok kiracılı senaryolar, ve elle yönetilen uzun ömürlü sunucular.

Konteyner: yatay ölçeklenen hizmetler, sık dağıtım yapılan uygulamalar, mikro hizmetler, ve derleme ile test iş akışları.

Karar noktası genelde şu sorudur: bu iş yükü sık mı dağıtılıyor ve durumsuz mu çalışabiliyor? İkisine de “evet” ise konteyner, aksi hâlde sanal makine doğru tarafta durur.

Çoğu ortamda ikisi birden

Gerçek kurulumlarda seçim genelde “ya o ya bu” değildir. Kubernetes düğümleri sanal makinelerdir; konteynerler onların içinde çalışır.

Bu katmanlı yapı ikisinin de avantajını verir: sanal makine sınırı güçlü yalıtımı ve altyapı yönetimini sağlar, konteyner katmanı hızlı dağıtım ve ölçeklemeyi getirir.

Kubernetes’in ne olduğu Kubernetes nedir yazısında; kaynak sınırlarının nasıl konacağı istek ve sınır rehberinde ele alınıyor.

Kaynak sınırları farklı işler

Sanal makinede bellek baştan ayrılır ve makine onu kendi işletim sisteminin bildiği gibi kullanır.

Konteynerde sınır çekirdek tarafından uygulanır ve aşıldığında süreç öldürülür. Uygulamanın çalışma zamanı bu sınırı görmüyorsa — eski Java ve .NET sürümlerinde olduğu gibi — yığınını ana makinenin belleğine göre büyütür ve sessizce ölür.

Bu, konteynere geçerken en sık karşılaşılan sürprizdir ve çözümü çalışma zamanına sınırı açıkça bildirmektir.

Kısaca

Sanal makine donanımı, konteyner işletim sistemini sanallaştırır. Birincisi güçlü yalıtım ve tam bağımsızlık, ikincisi hafiflik ve hız verir.

Güvenlik sınırı gereken yerde sanal makine, ölçek ve dağıtım hızı gereken yerde konteyner. Pratikte çoğu ortam ikisini üst üste koyar — ve doğrusu da budur.

Hipervizör katmanının kendisi hipervizör nedir yazısında.

Mustafa Çelik

Altyapı ve Operasyon Müdürü, İstanbul. 25 yıldır BT altyapısı, sistem yönetimi ve ağ altyapısıyla uğraşıyor; öğrendiklerini bu blogda üretim ortamında denenmiş rehberlere çeviriyor.

Hakkımda

Bu rehber işinize yaradıysa, sonrakini kaçırmayın.

Yeni yazı yayınlandığında tek e-posta. Takvim yok, dilediğiniz an çıkabilirsiniz.

Bülten sağlayıcısı henüz bağlanmadı. Bağlanana kadar e-posta ile yazabilirsiniz ya da RSS akışını takip edebilirsiniz.