01.01. Docker vs. VM

Docker, Virtual Machine (VM) gibi bir sanallaştırma yazılımıdır. Ancak, VM yazılımlarına göre avantajları vardır. Bu bölüm, iki teknolojinin kıyaslamasına ayrılmıştır.

Sanal makine (VM), bir bilgisayar sisteminin sanallaştırmasıdır. Sanal makine yazılımı üzerinden fiziksel bir bilgisayarın işlevliğini elde ederiz. Özellikle bir donanım üzerine birden fazla işletim sistemi kurulmasında çok kullanılmış ve uzun yıllar sunucu yönetimleri tercih edilmiş bir yöntemdir. (Hala tercih eden firma sayısı fazla :))

Şekilde görüldüğü gibi her iki teknoloji uygulamalara donanımdan izole edilmiş ortamlar yaratmada kullanılır. Başlıca fark izolasyon seviyesindedir. Sanal Makinalarda bir Hypervisor üzerinden aynı donanımı birden fazla işletim sistemi kurulabilir. Hypervisor tanım olarak, birden fazla işletim sisteminin aynı donanım üzerinde çalışmasını sağlayan komut seti olarak açıklanabilir. Container ise bir işletim sistemi üzerine kurulan Container Engine (Konteyner Motoru) üzerinden direkt sanal uygulamalar kurmaya olanak sağlar. Bu sanal uygulama işletim sistemi veya direkt bir uygulama olabilir. Farkları görmeye ve tahmin etmeye başladınız gibi… Kısaca farklılıkları farklı seviyelerde inceleyelim.

Farklar Virtual Machine Docker
İşletim Sistemi
  • Ana bilgisayar çekirdeğini paylaşmaz.
  • Her uygulamanın eksiksiz bir işletim sistemine veya Hypervisor’e ihtiyacı vardır.
  • Docker, container’lar herhangi bir işletim sisteminde uygulama bazında kullanılabilir.
  • Docker’da, container’lar ana işletim sistemi çekirdeğini paylaşırlar.
  • Bu teknolojide, birden çok iş yükü tek bir işletim sisteminde çalışabilir.
Performance
  • Bir VM sistem üzerine işletim sistemi kurulduğu için daha fazla kaynağın kullanılmasına neden olur.
  • İşletim sisteminin yüklenmesi ve uygulamanın hazırlanması Docker’a göre daha yavaş kalır.
  • Docker container’ları aynı işletim sistemini kullandıkları için daha hızlı başlatılabilir. Başka bir deyişle başlatma süresi daha kısa olur.
Taşınabilirlik
  • Taşınabilirlik sorunları vardır.
  • VM’lerin merkezi bir hub’ı yoktur ve verileri depolamak için daha fazla bellek alanı gerektirir.
  • Dosyaları aktarırken, VM işletim sisteminin ve bağımlılıklarının bir kopyasına sahip olması gerekir. Dosya boyutunun artması aktarımı daha yavaşlatır.
  • Docker container ile, kullanıcılar bir uygulama oluşturabilir ve bunu bir container görüntüsünde (image) depolayabilir. Ardından, herhangi bir ana bilgisayar ortamında çalıştırabilir.
  • Docker container sanal makinelerden daha az yer kaplar. Bu sayede bilgisayarınızın dosya sistemindeki dosyaları aktarma işlemi daha kolay şekilde olur.
Hız
  • İşletim sistemi de ayrıca başlatıldığı için uygulamanın ayağa kalkması zaman alır.
  • Tek bir uygulamayı dağıtmak için tüm işletim sisteminin kopyalanması ve taşınması gerekir.
  • Docker container’indeki uygulama, işletim sistemi zaten hazır ve çalışır durumda olduğundan geçikme olmadan başlar.
  • Container temel olarak bir uygulamanın dağıtım sürecinde zamandan tasarruf etmek için tasarlanmıştır.

Her ne kadar Docker yapısını ön plana çıkarmış olsak ta gelecekte ne olacağını bilemeyiz. Teknolojinin hep geliştiği unutmayalım 🙂