Docker Nedir ? - Betelgeuse Bilişim

Docker Nedir ?

Container Nedir?

Containerları diğer processlerden ayrı olarak bir process grubu olarak düşünebiliriz. Bu konteynerlar kendi process ID’lerine, mem/CPU limitlerine, network’lerine, namespace’lerine ve dosya sistemlerine sahiptirler. Containerlar da aslında Sanal Makineler (Virtual Machine) gibi bir sanallaştırma (virtualization) türüdür. Containerlarda sanallaştırma Kernel sayesinde yapılır ve Sanal Makinelerin aksine birden çok container tek bir makinenin Kernel’i üzerinde yürütülür. Sanal Makinelerde ise her SM (VM) kendi Kernel’ine sahiptir. Sanal Makinelerle kıyasladığımız zaman Containerlar oldukça hızlıdırlar. Sanal Makineleri çalıştırmak dakikalar sürerken bu süre Konteynerlarda milisaniyelerle ölçülür. Ayrıca Sanal Makinelerden daha az yer kaplarlar. Fakat izolasyon bakımından Sanal Makinelere göre zayıftırlar çünkü tek bir Kernel üzerinden yürütülürler.

Docker Nedir?

Docker, yazılımları kitaplıklar, sistem araçları, kod ve çalışma zamanı dahil olmak üzere yazılımların çalışması için gerekli her şeyi içeren containerlar halinde paketleyen bir container platformudur ve Linux Containers (LXC) üzerine kurulu bir teknolojidir. Bulut yazılım veya Blockchain teknolojisinde yeri oldukça önemlidir.

Docker Client-Server modeli ile çalışır. Client Docker host’u ile konuşarak program ile ilgili “build”, “pull”, “run” gibi talimatları (instructions) bildirir. Host RESTful API aracılığıyla client ile konuşur. Registry ise bir Docker image kütüphanesidir.

Bu noktada sizlere küçük bir Docker sözlüğüne ihtiyacımız olacak sanırım:

Image çalıştırmak istediğimiz programların paketlenmiş halleridir. Her image layer’lardan oluşur ve her image’ın bir base layer’ı vardır. Her yeni yaratılan container için image üzerine bir layer eklenir. Popüler image’lar için: Explore - Docker Hub

Image’lar Docker Registry kütüphanesinden indirilir. Containerlar ise image’ların çalışabilen bir örneğidir. Dockerfile ise image yaratmak için instructionlar içeren bir dosyadır. Dockerfile’daki bilgiler Docker Engine tarafından işlenir ve image yaratılır. Volumes ise data directory’sidir. Data volume sunucu ile /var/lib/docker/volumes directory’sinde paylaşılır.