Yazılım Geliştirme

Nedir Bu Docker? Kullanım Alanları Nelerdir?

3 dakika • 16 Ocak 2021

Nedir Bu Docker? Kullanım Alanları Nelerdir?
Veri Analitiği
Bu içeriği yapay zeka ile özetle
  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

 


 

Önerilen bloglar

Tüm bloglar

Açık etkinlikler

Tüm etkinlikler
Data Science & AI Day
Meet-up
Data Science & AI Day

Teknoloji Dünyasında Verinin Önemini Keşfet!

Son Başvuru 18 Kasım
Başlangıç 19 Kasım
Bitiş 19 Kasım
Detaylı bilgi
49W x Coderspace: Yapay Zeka Paneli
Meet-up
49W x Coderspace: Yapay Zeka Paneli

Yapay Zeka’nın Yakın Geleceği: 2027'de Bizi Neler Bekliyor?

Son Başvuru 22 Kasım
Başlangıç 24 Kasım
Bitiş 24 Kasım
Detaylı bilgi
Boğaziçi Teknoloji Zirvesi
Meet-up
Boğaziçi Teknoloji Zirvesi

Boğaziçi Teknoloji Zirvesi: Yapay zeka, finansal teknolojiler ve dijital dönüşümün vizyoner liderleriyle genç yetenekleri aynı sahnede buluşturmak; öğrencilere ilham dolu paneller, keynote oturumları ve fuaye alanında doğrudan networking fırsatı sunan tek günlük fiziksel etkinliktir.

Son Başvuru 23 Kasım
Başlangıç 28 Kasım
Bitiş 28 Kasım
Detaylı bilgi

Codecast yazılımcı sohbetleri

Farklı alanlardan konuklarımızın katılımlarıyla gerçekleşen Codecast’te yazılım ve veri bilimi yöneticilerini Podcast serimizde konuk ediyoruz!

Codecast

Python ile Programlamaya Giriş Eğitimini Kaçırma! 🏃‍➡️

Yazılıma sıfırdan başlamanın en uygulamalı yolu burada. 🖐️ Python ile Programlamaya Giriş eğitiminde gerçek projelerle ilerle, sertifikanı kazan!

Hemen İncele!

Teknoloji dünyasında neler oluyor?

Coderspace Bülteni ile en güncel yazılar, analizler ve gelişmeler 5 dakikada e-posta kutunda!