Docker Nedir? Konteyner Nedir? (Container Architecture)

Bilindiği üzere IT dünyası çok hızlı gelişmekte ve trendler çok hızlı değişmekte. Bu makalemde de son zamanlarda herkesin sıkça duyduğu konteyner yapısı ve Docker hakkında bilgim yettiğince sizlere anlatmaya çalışacağım.

Konteyner yapısının ve getirdiği farklılıkların daha iyi anlaşılabilmesi için öncelikle eskiden ne yapıyorduk, şimdi ne yapıyoruz bir hatırlayalım.

Geleneksel fiziksel mimari

Sanallaştırma teknolojilerinden önce bir fiziksel sunucu üzerine birden fazla işletim sistemi kurmak mümkün olmuyordu. Farklı her bir işletim sistemi için mutlaka yeni fiziksel kaynak, çoğu zaman da en basitinden port çakışmaları gibi sebeplerden her bir uygulama için de farklı fiziksel kaynak ihtiyacı oluyordu. Bu durumda her yeni sunucu ihtiyacında temin süresi bekleniyor, alınacak sunucular için rack alanı ayarlanıyor, sistem odasının soğutma tasarımı ve enerji tüketimi gözden geçiriliyor vs. vs. bir çok olumsuz ve iş yükü getiren detay ortaya çıkıyordu.

Sanallaştırmanın getirdiği kazançları görmek için, bundan 10 yıl kadar önce yazmış olduğum aşağıdaki makaleyi okumanızı öneririm.

Hypervisor Tabanlı Sanallaştırma Teknolojisi

Sanallaştırma teknolojileri hayatımızda çok şey değiştirdi. Bugüne kadar yaygın sanallaştırma teknolojilerinde işlemci gücü, memory, depolama alanı ve ağ iletişimini sağlayabilmek adına ihtiyaç duyguduğumuz fiziksel sunucu üzerine hypervisor (VMware ESXi, Hyper-V vb.) kurar, sonra bu hypervisor üzerinde sanal makinelerimizi oluştururuz.

Bu sanal makinelerin her birine yeni bir işletim sistemi kurar, sonra da içerisine uygulama ve servislerimizi yükleriz. Bu yapı halen çok yaygın şekilde kullanılmakta. Aşağıdaki şekil sanallaştırılmış bir ortamı anlatmakta.

Bu yapıda sanal makineler arası izolasyon iyidir, ama her seferinde yeni işletim sistemi kurmak, dolayısı ile birbirinden bağımsız işletim sistemlerinin ayrı ayrı yönetilmesi güvenlik yamalarının geçilmesi vb. iş yüklerini beraberinde getirir.

Konteyner Mimarisi

Konteyner mimarisi de aslında bir sanallaştırma teknolojisidir, yalnızca hypervisor katmanı yerinde host işletim sistemi ve bu işletim sisteminin üzerinde konteyner motoru bulunur. Özetle aynı işletim sistemi üzerinde farklı uygulama veya servisleri sanallaştırarak çalışır. Aşağıdaki şekil ile docker mimarisi ve bir üstte bahsettiğimiz geleneksel sunucu sanallaştırma arasındaki farkı görebilirsiniz.

Günümüzde en popüler konteyner mimarisi olarak kullanılan Docker olsa da aslında bu işin atası 2008 yılında ilk sürümü çıkan Linux Containersdır. Yani aslında hypervisor tabanlı sanallaştırma kadar eskiye dayanan LXC geliştirilmiş, manuel olarak yapılan bir çok işlem ustaca otomatikleştirilmiş ve kullanım kolaylığının artmasıyla yaygınlığı da artmıştır.

Konteyner mimarisinde çok anlatılan ama aslında gerçek olmayan bir detaydan da bahsetmek istiyorum.

Bazı arkadaşlardan konteyner mimarisi daha iyidir çünkü hypervisor tabanlı sanallaştırmada işletim sistemine verdiğiniz kaynağın kullanılmayan kısmı çöp olur, bu yüzden verimlilik düşer gibi cümleler duyuyorum. Bu doğru bir yaklaşım değil, hypervisor tabanlı sanallaştırmada da atanan kaynakların kullanılmayan kısmı diğer sanal makineler tarafından kullanılabilir.

Burada sadece her sanal makine için ayrıca kurulan işletim sistemlerinin kapladığı disk alanı ve işletim sisteminin boştaki veya ayakta kalabilmesi için harcanan cpu ve memory kaynaklarının verimsizliği konuşmak doğru olabilir.

Depolama kullanımı için de depolama birimi üreticileri deduplication, compression gibi teknolojileri ile disk kullanımındaki verimliliği arttırabilmekteler.

Docker Nedir?

Docker yukarıda anlattığım gibi konteynerlar oluşturup, bunları rahatça kullanabilmemizi ve yönetmemizi sağlayan, zengin kütüphaneleri bulunan yapıdır.

Sanal makinelerin aksine docker imagelar kullanarak saniyeler içerisinde yeni bir uygulama veya hizmeti devreye alabilir, yine saniyeler içinde bakım ve yönetim operasyonlarını yürütebilirsiniz.

İhtiyaca göre uygulama sunucularının sayısının arttırılması veya azaltılması, yük dengelemesi yapılabilmesi vb. teknolojiler konteyner mimarilerinde çok daha kolaydır.

Bu otonom yapı için Docker Swarm veya ilerleyen günlerde kaleme alacağım Kubernetes yazılımları gereklidir.

Güncelleme: Kubernetes hakkındaki makaleme aşağıdan ulaşabilirsiniz.

Yeni başlayanlar veya konsepti anlamak için yeterli bilgiyi verdiğimi düşünerek makalemi sonlandırıyorum. Soru veya görüşlerinizi yorum kısmına yazabilirsiniz.

Sabırla okuduğunuz için teşekkürler.

İLGİNİZİ ÇEKEBİLİR

VMware Photon OS 5.0

Daha önceki makalelerimde detaylı değindiğim PhotonOS 5.0 sürümü yayınlandı. Bu sürüm ile birlikte gelen yenilikler ...

VMware Tanzu – Storage

Bir önceki yazımda kubernetes platformları storage konseptleri hakkında temel bilgiler paylaşmıştım. Bu yazımda da Tanzu ...

Kubernetes Platformları – Storage

Bu makalemde kubernetes platformlarında kullanılan depolama çözümleri ile ilgili temel bilgi ktarmaya çalışacağım. VMware Tanzu ...

VMware vSAN 8 Neler Yeni?

VMware Explore 2022 da vSphere 8 ile birlikte vSAN 8 de duyuruldu. vSAN 8 ile ...

5 yorum

  1. Harika bir yazi ellerine saglik … 🙂

  2. yani kısaca hypervisor yapısında sanallaştırma için vmware esxi ya da hyper-v gibi bir yapı kuruluyor. ve bu yapı üzerine önce işletim sistemi ardından da kullanmak istediğimiz roller kuruluyor.
    docker mimarisinde ise hypervisor yapısına ihtiyaç duyulmadığı için direkt olarak istediğimiz uygulamalar kuruluyor. mesela bana dhcp lazım. bu durumda sadece dhcp’yi aktif ettiğim zaman uygulamayı çalıştırabilecek miyim?

  3. Hypervisor temelli sanallaştırmada, önce işletim sistemi onun üzerine uygulama yada servis kuruyoruz burada kısaca sadece donanım paylaşılıyor. Container mimarisinde sadece uygulama ya da servisi container olarak deploy ediyoruz burada da kısaca donanım ve işletim sistemi paylaşılıyor diyebiliriz.
    DHCP örneği için doğru external network yapılandırması ile DHCP imajı deploy edip çalıştırmanız mümkündür.
    Konteyner mimarisindeki ağ yapısı da legacy sistemlerden biraz farklı çalışıyor. Kubernetes network tarafında service, router, ingress, egress gibi kavramları da araştırmanız faydalı olacaktır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.

error: İçerik Korumalıdır !!