Sanal Makineler
Sanal makineler donanımsal altyapının(infrastructure) üzerine bir Hypervisor sistem kurularak yapılandırılrlar. Piyasada bir çok sanallaştırma platformu bulunmaktadır.
- Microsoft hyper-v
- Virtual Box
- VMware
Hypervisor üzerine de sanal makineler kurulmaktadır. Her bir sanal makine genelde Linux veya Windows işletim sistemine sahiptir.
Container’lar
Container sistemleri için donanımsal altyapı(infrastructure) üzerine tek bir işletim sistemi ve bu işletim sistemi üzerine de Docker gibi container engine kurulur.
Container kullanmanın en önemli özelliklerinden biri, bir uygulamayı, kendine ait bağımlılıkları ve framework altyapılarıyla birlikte paketleyip dış dünyaya sunabilme imkanı vermesidir. Yukarıdaki şemada bulunan APP1, APP2, APP3 gibi uygulamaların her biri bir imaj haline getirilerek tüm dünyanın kullanımına açılacak şekilde Docker Registry üzerinden dağıtılabilir. Bu süreç deterministiktir. Yani uygulama imajın oluşturulduğu makinede nasıl çalışıyorsa başka birinin docker sisteminde de aynı şekilde çalışır.
Karşılaştırmalar
Bir sanal makine eğer tek bir uygulamanın barındırılması amacıyla kuruluyorsa, bu durumda işletim sistemi üzerinde uygulamanın altyapısal yönetimi ve işletim sisteminin yönetiminin yapılması gerekmektedir. Ancak container sistemlerde tek bir işletim sistemi bulunduğundan ve uygulama altyapıları container içerisine image aracılığı ile inşa edildiğinden dolayı bu tür bakım gereksinimleri ortadan kalkar.
Sanal makineler tek bir uygulama için kurulduğunda atıl kapasiteler meydana gelmektedir. Örneğin 4GB ram varsa işletim sistemi bunun bir kısmını kendi ihtiyaçları için kullanır ve üzerine kurulan uygulama da aynı şekilde ihtiyacı olanı kullandığında arta kalan memory miktarı ve işletim sisteminin kendi ihtiyaçları için kullandığı memory miktarı boşa giden kaynaklar olarak değerlendirilebilir. Container sistemlerde tek bir işletim sistemi kendi ihtiyacını kullanırken kalan kaynaklar uygulama ihtiyaçlarına göre tasnif edilerek kullanılır. Artan kaynaklar da yeni container’lar için boşta bekletilebilir. Bu sayede daha ölçeklenebilir bir yapı oluşturulabilir.
Container sistemlerde yönetilmesi gereken tek bir işletim sistemi varken, sanallaştırma sistemlerde yönetilmesi gereken birden fazla işletim sistemi bulunur.
Container endine direk donanım üzerindeki işletim sistemine değil de, sanal makineler üzerine de kurulabilir. Sanallaştırma sistemleri container sistemler için altyapı oluşturabilirler.
Container sistemlerde oluşturulan imajlar dünyanın her yerinde çalıştırılabilir hafif yüklü paketlerdir. Sanal makineler de her ne kadar paketlenebilir olsa da, paketin çalışabilmesi için diğer sistemde aynı hypervisor ve benzer donanımsal sistemlerin olması gerekir. Ayrıca paket boyutları çok büyük oladuğu için taşınabilirlik daha zor olabilmektedir.