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.

Docker Nedir? Konteyner Nedir? (Container Architecture)

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.

Docker Nedir? Konteyner Nedir? (Container Architecture)

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.

2 yorum

  1. Geri izleme. Kubernetes Nedir? - Fatih Şölen | Bilgi Teknolojileri Blogu

  2. Geri izleme. VMware Project Pacific - Fatih Şölen | Bilgi Teknolojileri Blogu

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

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