Nedir Bu Docker? Kullanım Alanları Nelerdir?

Event Hero Image
  1. 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. 



  1. 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.


  1. Neden Docker ?

  • Docker uygulamalar arası dağıtım yapmayı, hataları belirlemeyi ve bu hataları düzeltmek için geri almayı kolaylaştırır. 

  • Bir yerde build edilip her yerde çalıştırılabilir. 

  •  Her container izole olduğundan birden fazla uygulamanın aynı veya benzer versiyonu aynı anda yürütülebilir.

  • Docker daha hafif olduğundan bir sunucuda daha fazla kod çalıştırabilirsiniz ve bu tasarruf etmenizi sağlar.

  • Kolay ölçeklendirilebilir çünkü uygulama halihazırda paketli ve yüklenmiştir. Sadece çalıştırmak yeterlidir.

  • Amazon verilerine göre Docker uygulama geliştirme sürecini 7 katına kadar hızlandırabilir.


  1. Kurulum ve Komutlar

Öncelikle Docker kurulumu için: https://docs.docker.com/get-docker/


  • create: Docker imagelarını bir container olarak çalıştırmamızı sağlar.

  • ps: Çalışan containerları listeler. -a parametresini eklersiniz, çalışan ve çalışmayan tüm containerlar listelenecektir.

  • start: Oluşturulmuş olan containerları başlatır.

  • attach: Terminalinizi standart giriş/çıkış’ını (I/O) containerlara bağlar.

  • build: Dockerfile dosyasını alarak image haline getirir.

  • images: Makineniz içerisinde çalıştırılabilir Docker imagelarını gösterir.

  • run: Containerı çalıştırır ve belirtilirse container içinde komut çalıştırır.

  • rmi: Bir veya birden fazla Docker image ını silmek için kullanılır.

  • rm: Bir veya birden fazla containerı silmek için kullanılır.

  • kill: Bir veya birden fazla çalışan containerı durdurmak için kullanılır.

  • ps: Çalışan containerları listelemek için kullanılır.

  • tag: Oluşturulan imagelara tekrar ulaşabilmek için etiketleme yapar. (Versiyonlama için kullanılabilir)

  • login: Docker Registery (Hub)’a bağlanmak için gerekli olan doğrulamayı yapar.

Örnek komutlar olarak;

  • Docker Run:

docker run --name greeting ubuntu:18.04 echo 'Hello world, I am a container!'

  • Docker Build:

docker build -t ubuntu-based-nginx:v1 .

Yeni yaratılan image’a göz atmak için:

docker image ls

REPOSITORY                                      TAG                             IMAGE ID            CREATED             SIZE

ubuntu-based-nginx                              v1                              02acf5ee6c20        12 seconds ago      152MB

Yeni yaratılan ngix image’ı çalıştırmak için:

docker run -d -p 8080:80 ubuntu-based-nginx:v1

Container’ın çalışıp çalışmadığnı kontrol etmek için:

docker ps

 

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                    NAMES

d27f607046a5        ubuntu-based-nginx:v1   "nginx -g 'daemon of…"   5 seconds ago       Up 4 seconds        0.0.0.0:8080->80/tcp     admiring_goldwasser

 




Mert Saraç 16 Ocak 2021

Seni En İyi Şirketlerle Eşleştirelim 🚀

Yazılımcıların Kariyer Platformu Coderspace'de kaydını oluştur, yazılım dili, maaş beklentisi gibi bilgilerini tamamla, Türkiye ve Avrupa'dan en uygun şirketlerle eşleş!

En Son Yazılar

Coderspace'den ilginizi çekebilecek son yazılar

Image placeholder
Image placeholder
Image placeholder