Docker Bölüm 1: Mimari

Docker

Genelde yazılarıma mimari ile başlamam biliyorsunuz; fakat Docker’ı uzun uzun anlatmayacağım, çünkü oldukça fazla yapıldı. Herhangi bir yerden Docker’ın ne olduğunu ve ne işe yaradığını rahatlıkla öğrenebiliyoruz artık. Bu yüzden benim gibi detaycı bir karakter iseniz kolay ulaşamayacağınız bilgileri sizin için vermek bana daha cazip geldiğinden bir istisna olarak Docker mimarisinden başlıyorum.

Docker Mimarisi

Docker toplamda 3 bölümden oluşmaktadır. Bunlar:

  • Docker Host
  • Docker Client
  • Docker Registry
  • Ek olarak Docker Objects: Images, Containers, Networks, Volumes, Plugins

Docker Client

Docker yapılandırma komutlarını yazdığımız cli’dır. Burada yazdığımız komutlar Docker Host üzerine gönderilir ve çalıştırılır. Elbette Docker Host üzerinde de çalıştırılabilirler. Öncelikli görevi kullanıcıların Docker Deamon ile iletişim kurabilmeleridir.

Docker Host

Docker Engine’in üzerinde koştuğu sunucudur.

Docker Engine

Tüm container süreçlerinin yönetildiği Docker Deamon, Deamon’ı dış dünyaya bağlayan ve gelen istekleri dinleyen Rest API ve son kullanıcının girdilerini yaptığı Docker Client’tan oluşan yapıdır.

Docker Deamon

Docker Client üzerinden gelen image, container, network, volume gibi işlemleri arkaplanda yönetmekle sorunludur. Servislerde ismi dockerd olarak geçer.

Docker Registry

Bir kayıt defteridir. Docker içerisinde çalıştırılacak image’lar burada saklanır. Image dosyaları iso veya template dosyaları gibi düşünülebilir.

Bir image yüklenmek istendiğinde öncelikle Registry içerisinde arama yapılır, eğer varsa yükleme işlemi gerçekleştirilir.

Default Registry adresi: hub.docker.com’dur ve Docker Hub olarak literatürde kullanılır. Public olarak kullanım amaçlıdır; ama pro versiyon ile kendinize özel image’larda saklayabilirsiniz.

Docker Image

Container oluştururken kullandığımı, read only template’lerdir. Iso dosyaları gibi düşünülebilir. Container’ların yetenklerini ve ihtiyaçlarını tanımlayan metadata’ları da saklamaktadır.

Docker image’ler genel olarak Docker Hub üzerinden çekilirler. Elbette kendinize özel bir Registry de oluşturma şansınız var. Docker Hub’ın en büyük artısı, offical olarak birçok uygulama ve işletim sistemi için image bulmak ve kulanmak mümkündür.

Docker Container

Docker Image kullanılarak oluşturulan uygulamalardır. Image içerisinde tanımlı tüm bağımlılıklar container üzerine yüklenir ve çalıştırılırlar. Bir image’den birden çok container oluşturulabilir.

Container Mimarisi

Docker, 2008 yılında Linux Kernel’a eklenen container mimarisini kullanmaktadır.

Yukarıda uygulama olarak gördüklerimiz birer container. Docker ise burada Container yöneticimizdir. Linux’un zor olan container teknolojisini daha basit olarak kullanmamıza olanak verdiği için Docker bu kadar çok yaygınlaşmıştır. Docker dışında başka container yöneticileri de vardır ve temelde bunlar Linux kernel üzerine talepleri gönderip, container’ları daha iyi yönetmemizi sağlarlar.

Container’lar, birbirinden izole şekilde çalışmaktadır. İzole çalışmasının arkasındaki teknoloji ise Linux kernel’deki Namespaces ve Control Groups’tur.

Namespace

Container’ların erişebileceği alanları kısıtlar. Bu sayede container sadece kendi üzerindeki servisleri görebilir, üzerinde çalıştığı işletim sisteminin servislerine ve disklerine erişim sağlayamaz. Bunun yanında diğer container kaynaklarına da erişemezler.

6 tane namespace bulunmaktadır:

PID (Process Identifier): Çalışan process’leri birbirinden izole hale getirir.

Network: Network interface ve roting tablolarını birbirinden bağımsız hale getirir.

Mount: File system’deki mount point’leri birbirinden izole eder.

IPC: İşlemleri farlı Inter-Process Communication ile izole hale getirir.

UTS: İşlemleri host ve domain name olarak birbirinden izole hale getirir.

User: İşlemler arasında Kullanıcı ID’leri birbirinden izole hale getirir.

 

Control Groups

Container’ların ne kadar kaynak tüketeceğini kontrol eder.

Not: Kaynak olarak Murat AKSU’dan faydalanılmıştır.

Data Science Earth

Data Science Earth ekibi, üst düzey Veri Bilim çözümleri üretmek amacı ile toplanmış akademisyenler ve uzmanlardan oluşmaktadır. Öncelikli olarak veri bilincini geliştirmeyi ve küreselleşen rekabet ortamında verinin gücünün doğru kullanılmasını sağlamayı amaçlamaktadır.

Sponsor

QuestionPro 35 farklı soru seçim özelliği ile anket çalışmalarımıza güç katmaktadır.