CONTAINER TEKNOLOJİSİ NEDİR?

Container teknolojisini daha iyi kavramamız adına öncelik olarak Sanallaştırma Teknolojisi'ne göz atacağız.


Sanallaştırma teknolojisi karmaşık sistemleri birbirinden ayırmayı mümkün hale getiriyordu. Fiziksel olarak iki tane makineniz varken sanal olarak onlarca farklı makineyi yönetebilmeniz mümkün hale geldi. Bu sayede farklı uygulamalar farklı sanal makinelerde çalıştırılmaya başlandı. Sistemdeki sorunlar sadece mevcut sanal makineyi etkilerken geri kalanı sıkıntısız çalışabiliyordu.

Sanallaştırma teknolojisinin kalbi olan hypervisor yazılımları bu büyük sıçramanın en büyük sorunu haline gelmeye başlamıştı. Ayda yılda bir gelen yazılım güncelleştirmeleri yerini her gün binlerce kez değişen canlı sistemlere bıraktı. 2015’te Amazon geliştiricileri ortalama 11.7 saniyede bir yeni kodu canlı ortama gönderiyordu. Bu tarz bir değişiklik sanallaştırma teknolojisinin yeteneklerinin fazlasını gerektiriyordu.


Container teknolojisinin en büyük özelliği izolasyon diyebiliriz. Kullanılan uygulamaların çeşitli bağımlılıkları, kütüphaneleri ve dosyaları mevcut. Uygulamaların çalışan işlemlerini ve bu bağımlılıklarını izole bir biçimde kullanabilmenize olanak sağlayan teknolojiye container teknolojisi diyoruz. Bu sayede bir yerde çalışan uygulama her ortamda çalışabilir hale gelebilmektedir. Aynı uygulamanın 22 farkı versiyonu, farklı ortam değişkenleriyle kullanılabilir hale geliyor.

Performans açısından da gayet verimli bir teknolojiden bahsediyoruz. Sebebi ise sanallaştırmada yer alan hypervisor teknolojisinin yer almaması. Burada aslında bir çekirdek sanallaştırmasından bahsetmek mümkün. Aynı çekirdeği bütün uygulamalarınız kullanabilmekte ve çekirdeğin üzerinde direkt olarak uygulamanızı çalıştırma imkanına sahipsiniz.

Uygulamaların her seferinde aynı şekilde çalışmasını da imajlar sayesinde sağlayabiliyoruz. İmajlarımızı depoladığımız alanlar sayesinde de tekrardan uygulamanın gereksinimlerini oluşturmadan direkt olarak sunucularımızda çalıştırabiliyoruz.

containerler küçük, hızlı ve taşınabilirdir. Bunun nedeni, sanal bir makinenin aksine, containerlerin her eş görünümde bir konuk işletim sistemi içermesinin gerekli olmaması, bunun yerine, anasistem işletim sisteminin özelliklerinden ve kaynaklarından yararlanmasının yeterli olmasıdır.


Containerlerin Avantajları

Containerlerin, özellikle bir sanal makineyle karşılaştırıldığında birincil avantajı, onları hafif ve taşınabilir kılan bir soyutlama düzeyi sağlamasıdır.

  • Hafif: Containerler, makine işletim sistemi çekirdeğini paylaşarak, uygulama başına tam işletim sistemi örneğine eş görünümüne olan gereksinimi ortadan kaldırır ve container dosyalarının küçük olmasını ve kaynaklara yüklenmemesini sağlar. Özellikle sanal makinelere kıyasla daha küçük boyutları, hızlı bir şekilde oluşturma işlemi gerçekleştirebilecekleri ve yatay olarak ölçeklenen bulut tabanlı uygulamaları daha iyi destekleyebilecekleri anlamına gelir.

  • Taşınabilir ve platformdan bağımsız: Containerler, tüm bağımlılıklarını yanlarında taşır; bu, yazılımın bir kez yazılabileceği ve ardından dizüstü bilgisayarlar, bulut ve şirket içi bilgi işlem ortamlarında yeniden yapılandırılmaya gerek kalmadan çalıştırılabileceği anlamına gelir.

  • Modern geliştirmeyi ve mimariyi destekler: Platformlar arasında devreye alım taşınabilirliği/tutarlılığı ve küçük boyutlarının bir bileşimi nedeniyle, containerler, modern geliştirme ve DevOps, sunucusuz ve mikro hizmetler gibi küçük artışlarla düzenli kod devreye alımlarına dayanan uygulama kalıpları için idealdir.

  • Kullanımı iyileştirir: Kendilerinden önceki sanal makineler gibi, containerler de geliştiricilerin ve operatörlerin, fiziksel makinelerin CPU ve bellek kullanımını iyileştirmelerini sağlar. Containerlerin daha da ileri gittiği nokta, mikro hizmet mimarilerini de etkinleştirdikleri için uygulama bileşenlerinin daha alt seviyede ayrıntılandırılarak devreye alınabilmesi ve ölçeklenebilmesidir; bu, tek bir bileşenin yükle mücadele etmesi nedeniyle, monolitik uygulamanın tamamının ölçeğini yükseltme zorunluluğuna cazip bir alternatiftir.


Konteyner teknolojisi uzun ve karmaşık gibi görünen işleri basit hale getirmekle birlikte geliştirdiğiniz kodlardaki problemleri çözmek için tüm sistemi kapatmak yerine sorunun yaşandığı alana doğru bir müdahale yapmanızı sağlıyor. Bu sayede arka tarafta kalan sistem çalışmaya, kullanıcılar da sorun yaşamadan hizmet almaya devam ediyor. Bunun dışında konteyner kullanmaya başladığınızda disk alanında ciddi bir tasarruf sağlamak mümkün. Kısacası, küçük boyutlarına rağmen kendisinden çok daha büyük işlerin altından kalkabiliyor ve bunun için terabaytlarca ya da petabaytlarca yer ayırmak ya da ekstra depolama alanı satın almaya gerek kalmıyor. Kaldı ki bu iş bulut üzerinde yapıldığında da fiziksel olarak herhangi bir şekilde saklama ve yönetme zorluğu olmuyor. Kolayca altyapı tarafındaki kaynakları esnek şekilde kullanabiliyorsunuz.

Konteyner Mimarisi Nedir?

Konteyner teknolojisinde kullanılan mimari başlı başına sanallaştırma ile gerçekleşiyor. Konteyner mimarisi ile teknoloji dünyasının önemli kırılma anlarından biri olan sanallaştırma teknolojisini birbirinden ayıran en önemli noktası ise host üzerinde hypervisor katmanı yerine konteyner motorunun kullanmasıdır. Dolayısıyla aynı işletim sistemini kullanarak farklı uygulamalar çalıştırılabiliyor.

Temel Container Kavramları

Docker gibi bir konteyner platformunun pratikte nasıl çalıştığını anlamak için bazı kavramları anlamanız gerekir. Bu kavramlardan en önemlileri aşağıdaki şekildedir:

1. Container Engine

Kapsayıcılarınızı oluşturmak, çalıştırmak ve yönetmek için ana makinenize yüklediğiniz uygulamadır. Kurulumunuzun özüdür ve konteyner sisteminizin diğer tüm bileşenlerini bir araya getirir.

2. Container Image

Gerçek çalışan kapsayıcılar oluşturmak için salt okunur bir şablondur. Tam olarak çalışır durumda bir kapsayıcı ortamını yapılandırmak için gereken tüm temel öğeleri bir araya toplayan bir dosya koleksiyonundan oluşur.

Görüntüyü oluşturan dosyaların her biri katman olarak bilinir. Bu katmanlar, aşamalı olarak birbiri üzerine inşa edilmiş bir dizi ara görüntü oluşturur.

Kapsayıcı görüntüleri salt okunur olduğundan, geleneksel sunucu modelinde çok yaygın olan yapılandırma kayması gibi sorunlardan kaçınarak modern değişmez altyapının tüm güvenilirliğini ve tutarlılığını sunar. Container ortamlarınızda değişiklik yapmanız gerekiyorsa, önceki resminizi güncellenmiş bir resimle değiştirin ve yeni kapsayıcılarınızı bundan başlatın.

3. Parent Image

Kapsayıcı görüntünüzün ilk katmanı ve başlangıç ​​noktasıdır. Konteyner ortamlarınız için temel yapı taşlarını ve diğer tüm katmanların üzerine inşa edildiği temelleri sağlar.

Parent image, genellikle sadeleştirilmiş bir Linux dağıtımıdır. Ancak, bir uygulama framework’ü veya kullanıma hazır içerik yönetim sistemi (CMS) gibi tam bir uygulama yığını da olabilir.

Docker Hub veya Google Container Registry gibi bir kapsayıcı kayıt hizmetinden önceden yapılandırılmış parent image’ları içe aktarabilirsiniz. Alternatif olarak, kendi mevcut resimlerinizden birini de kullanabilirsiniz.

4. Base Image

Temel olarak kapsayıcı görüntülerinizi sıfırdan oluşturmanıza olanak tanıyan boş bir ilk katmandır. Temel görüntüler genellikle, görüntülerinin her parçası üzerinde tam kontrol sahibi olmak isteyen daha ileri düzey kullanıcılar için tasarlanmıştır.

5. Container

Bir kapsayıcı görüntüsünün canlı bir örneğidir. Çalışan bir kapsayıcı temel olarak aşağıdakilerden oluşur:

  • Başlatıldığı görüntü.

  • Kapsayıcı katmanı olarak bilinen ve çalışma süresi boyunca kapsayıcıda yapılan değişiklikleri depolamak için kullanılan, yazılabilir bir üst katman.

Bu katmanlı yapı, benzer kapların her biri kendi bireysel durumunu korurken aynı temel görüntüye erişimi paylaşmasına izin verdiği için kapsayıcı verimliliğinin anahtarıdır.


Okuduğunuz ve zaman ayırdığınız için teşekkür ederim.

15 görüntüleme0 yorum

İlgili Yazılar

Hepsini Gör