"Enter"a basıp içeriğe geçin

Containerization nasıl çalışır?

Docker tarzı containerization programlarının hayatımızı kolaylaştırdığı bir gerçek. Peki bunlar nasıl çalışır? Öncelikle Image, Container nedir bunlardan bahsetmek istiyorum.

Temel iki kavram (Image ve Container)

Image

Image, kodlarınızın veya dosyalarınızın saklandığı depolanıp bir araya getirildiği haldir. Image içinde olan dosyalar çalıştırılmaz, sadece bir şablon görevi görürler. Herhangi br yönetim, çalıştırma işlemi yapılmaz.

Container

Container, Image ile depolanmış dosyaların bir sanal oturum hale getirilmiş durumudur. Dosyalar container içerisinde çalıştırılır. Ağ bağlantısı işlemleri de aynı şekilde container içerisinde olur.

Container ve Image arasındaki fark

Image bölümünde işlem yapamazsınız ama container üzerinde işlem yaparsınız. Image üzerinde port yönlendirme, ağ işlemleri yapılmaz.

Containerization

Containerization, sanal bilgisayarların kolayca yönetimini sağlayan kavrama verilen isimdir. Normalde VPS gibi teknolojiler kullanılarak sunucunun içinde açılan sanal bilgisayarlar ile yönetim yapılıyordu. Ancak bu pek mantıklı değildi. Çünkü gereksinimleri statik şekilde ayarlamak, yönetimin zorluğu gibi çeşit çeşit sorunlarla beraber geliyordu. Şimdi ise container mantığı var. Container mantığı sayesinde her program bir container şeklinde saklanıyor ve bunları istediğimiz zaman kullanabiliyoruz.

Containerization (Görüntü Docker resmi sitesinden alınmıştır)

Nasıl çalışır

Containerization, Docker’a ait ve kendilerinin yapmış olduğu bir yapı değil. Linux çekirdiğinin kendisinde olan ve bu sayede kontrol edilebilen bir yapı. 3 Temel API bulunmakta.

API nedir

Bir programın başka programdan oluşturulan verileri yönetmek ve kullanmak için yapılan sistemin genel adına denir.

LXC

En temel API, linux container standart kütüphanesidir ve container’in çalışmasını sağlar.

Namespace API

Namespace API, containerlerin yönetimini sağlar. Dosya sistemi, IP Yapılandırılmaları bu sayede minimum kaynak ve yükle container oluşturulur.

Control Group (cgroup)

Linux kaynaklarını sınırlayan, yönetimini yapabildiğimiz sistemdir. Docker gibi programlar cgroup sayesinde kaynakları az kullanarak sunucu yükünü hafifletmeyi amaçlar.

Union File System (UnionFS)

Dosya sistemini yönetmeyi, containerler arasında dosyaların aktarımını sağlar. Volume yapısının temelinde bu vardır.

Docker gibi container araçları bu API’ları kullanarak container yönetimi yapar ve ardından yönetimi de yine API aracılığı ile yapar.

Container yönetim araçları

Bu bölümde popüler bir container yönetim programı olan “Docker” programı üzerinde durarak sistemin nasıl işlediğini anlayacağız.

Network

Docker, kendine özel bir ağ yapısında çalışır. Ağın içeriği B Seviyesinde ip adresleri vererek sanal ağ oluşur. containerler sürücüleri kullanarak iletişim sağlarlar. Bu ağ sürücüleri temelde 3 adettir. Kendiniz daha fazla yapabilirsiniz. Linux Namespace API sayesinde network oluşturulur ve ip işlemleri için linux iptables özelliğini kullanır.

Bridge

Docker, default olarak bridge kullanır. Amacı ise diğer containerler arasında bağlantı kurabilmek. Genellikle 3 4 yapıyı aynı anda kullanmak istediğimizde bunu yaparız.

Host

Bilgisayar ağına doğrudan bağlanır. Containerler bu şekilde bağlanırsa her container birbirine erişebilir. Port çakışmaları olabileceğinden her zaman bunu kullanmak doğru olmaz.

Overlay

Overlay, host yapısını birleştirmek amaçlı kullanılır. 2 ayrı uzak bilgisayar arasında bağlantı sağlayarak containerler diğer sunuculardan bile yönetilebilir.

MacVLAN

MAC adresi atamanızı sağlar. Bu sayede gerçek ağınızda yönetim yapabilir ve router ile yönetim yapabilirsiniz.

None

Herhangi bir hizmet kullanılmıyor. Genellikle özel durumlarda ihtiyaç duyulur.

Volume

Volume, container ile host arasında bir symlink (Sembolik kısayol) yaratır. Bu sayede dosyalar arasında paylaşım mümkün olur.

Port System

Namespace API kullanarak port sistemine stack ekler. Iptables kullanarak port bilgilerini linux sistemine kaydeder.

Layer system

Docker ve Buildah Image işlemlerini basitleştirmek ve tekrarlı adımları önlemek için layer mantığı kullanılır. Layer kullanılırken her bir satır koda yeni bir imaj oluşturulur ve bu imajlar bir önceki imajdan devam ederek çalıştırılır. Eğer satır değişirse değişen satırların hepsi tekrardan build alınır.

Sonuç

Containerization, yönetim için vazgeçilmezdir ve devops geliştirme sürecinde oldukça fazla kullanılır. Sonraki container ile alakalı yazımda docker komutlarından bahsedeceğim

Tek Yorum

Bir yanıt yazın

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