Ana içeriğe geç

Yan yana

KonteynervsSanal Makine

Konteyner (container) ile sanal makine arasındaki fark nedir?

Güncellendi 2 dk okuma8 fark

Kısaca

Konteyner uygulamayı bağımlılıklarıyla paketler, host'un çekirdeğini paylaşır; sanal makine kendi işletim sistemini çalıştırır, daha iyi yalıtır ama ağırdır.

Konteyner

Konteyner, bir uygulamayı bağımlılıklarıyla paketleyip ana makinenin paylaşılan işletim sistemi çekirdeği üzerinde çalıştıran hafif, yalıtılmış bir pakettir.

Konteyner sayfasını oku

Sanal Makine

Sanal makine, paylaşılan fiziksel donanımda kendi işletim sistemini çalıştıran, aynı ana makinedeki diğerlerinden yalıtılmış yazılım tabanlı bilgisayardır.

Sanal Makine sayfasını oku

Konteyner ve Sanal Makine karşılaştırması

ÖzellikKonteynerSanal Makine
Neyi sanallaştırırİşletim sistemini: süreçler, dosyalar, ağDonanımı: CPU, bellek, diskler, ağ kartları
İşletim sistemiAna makinenin çekirdeğini paylaşırKendi tam konuk işletim sistemini çalıştırır
İmaj boyutuMegabaytlardan birkaç yüz megabaytaGenellikle birkaç gigabayt
Başlatma süresiMilisaniyelerden birkaç saniyeyeSaniyelerden dakikalara
YalıtımSüreç düzeyinde; çekirdek paylaşıldığı için daha zayıfDonanım düzeyinde; hypervisor'ın uyguladığı güçlü bir sınır
YoğunlukAna makine başına düzinelerce ile yüzlerceAna makine başına bir avuçtan düzinelere
YönetenÇoğu zaman Kubernetes'in orkestre ettiği bir konteyner çalışma ortamıÇıplak donanımda ya da bir ana makine işletim sisteminde çalışan hypervisor
En uygun olduğu yerMikroservisler, CI işleri ve taşınabilir uygulama dağıtımlarıFarklı işletim sistemleri, eski uygulamalar, güçlü kiracı yalıtımı

Fark, açıklamalı

Konteyner, uygulamayı ve ihtiyaç duyduğu her şeyi, kütüphaneleri ve yapılandırmayı içeren bir imajdan çalışan yalıtılmış bir süreç ya da süreçler grubudur. Sanal makine (VM) ise sanal CPU'lar, bellek, diskler ve kendi konuk işletim sistemiyle tam olarak taklit edilmiş bir bilgisayardır; fiziksel ana makinede bir hypervisor tarafından yönetilir.

Fark, sanallaştırma düzeyindedir. VM'ler donanımı sanallaştırır; bu yüzden her biri tam bir işletim sistemi çekirdeği açar, gigabaytlarca disk kaplar ve başlaması çoğu zaman on saniyeler sürer. Konteynerler işletim sistemini sanallaştırır: Linux'ta süreçleri yalıtmak için namespace ve cgroup denen çekirdek özelliklerini kullanırlar; bu yüzden tek bir çekirdeği paylaşır, genellikle bir saniyeden kısa sürede başlar ve tek bir makineye yoğun biçimde sığar.

Genellikle aralarında seçim yapılmaz, birleştirilirler. Bulutta konteynerlerin çoğu aslında VM'lerin içinde çalışır; VM'ler müşteriler arasında güçlü güvenlik sınırını sağlarken konteynerler uygulamalar için hızlı ve taşınabilir paketleme sunar. Hafif mikro VM'ler ikisini harmanlar ve ek yalıtım için her konteynere ya da fonksiyona kendi küçük VM'ini verir.

Sık yapılan bir yanlış, konteynerlerin aynı yalıtıma sahip daha küçük VM'ler olduğu düşüncesidir. Konteynerler ana makinenin çekirdeğini paylaştığı için bir çekirdek açığı hepsini etkileyebilir ve bir Linux konteyneri Windows ya da macOS çekirdeğinde yerel olarak çalışamaz; bu sistemlerdeki konteyner araçları arka planda sessizce bir Linux VM'i çalıştırır.

Hangisini kullanmalısınız?

Konteyner şu durumlarda doğru seçim:

  • Birçok küçük servisin hızlı ve tekrarlanabilir dağıtımlarını istiyorsunuz.
  • Uygulamalar dizüstü bilgisayarda, CI'da ve canlıda aynı çalışmalı.
  • Ölçeklemek için örnekleri saniyeler içinde başlatıp durdurmanız gerekiyor.

Sanal Makine şu durumlarda doğru seçim:

  • Ana makineden farklı bir işletim sistemine ya da çekirdeğe ihtiyacınız var.
  • Güvenilmeyen kiracıların iş yükleri güçlü yalıtım gerektiriyor.
  • Tam bir makine bekleyen eski bir yazılım çalıştırıyorsunuz.

Sık sorulan sorular

Konteynerler sanal makinelerden daha mı az güvenli?

Yalıtımları daha zayıftır; çünkü VM'lerin her birinin kendi çekirdeği varken konteynerler bir çekirdeği paylaşır. Konteynerler iyi uygulamalarla yine güvenle çalıştırılabilir, ama bir çekirdek kusuru ana makinedeki her konteyneri etkiler.

Konteynerler bir sanal makinenin içinde çalıştırılabilir mi?

Evet ve bulutta en yaygın kurulum budur: VM'ler müşteriler arasında yalıtım sağlar, konteynerler de uygulamaları paketlemek ve ölçeklemek için onların içinde çalışır.

Docker bir sanal makine midir?

Hayır. Docker, konteyner oluşturmak ve çalıştırmak için bir araçtır. macOS ve Windows'ta arka planda hafif bir Linux VM'i çalıştırır; çünkü Linux konteynerleri bir Linux çekirdeğine ihtiyaç duyar.

Daha fazla

Ayarlar