Docker Nedir, Ne İşe Yarar? Kullanım Alanı

Paylaş :

Linux sistemindeki en alt seviyede bulunan yazılımı Linux Kernel’e eklenmiş olan Linux Containers (LXC) üzerine kurulmuş teknolojiye Docker adı verilmektedir. Docker, bir işletim sistemi üzerinde konteyner oluşturmak ve oluşturulan konteyner’daki uygulamaların dağılımının otomatik olarak yapılmasını sağlamak için Linux’un mevcut çekirdeğinin özelliklerini kullanan Container Engine olarak tanımlanmaktadır.

Docker Nedir, Ne İşe Yarar? Kullanım Alanı

Container Engine’lar, önceden tanımlanmış olan konfigürasyonlar doğrultusunda konteyner’ları otomatik olarak yönetmektedir. Linux Kernel ile entegre çalışan Docker, Linux tabanlı bir işletim sistemi üzerinden çalışmasını gerçekleştirmek zorundadır. MacOS ve Windows işletim sistemlerinde kurulan Docker, kendisine sanal bir sunucu kurarak onun üzerinden çalışmasını sürdürecektir. Bu da Docker içerisinde yer alan bir takım dosyalara erişimin sınırlanması anlamına gelmektedir. Arka planda Linux işletim sistemi olduğunda ise Docker hakimiyeti %100’e çıkmaktadır. 


Docker Ne İşe Yarar?

Docker, diğer sanal makinelerden farklı olarak, sanal işletim sistemini sıfırdan oluşturmak yerine, Linux çekirdeğinin paylaşımı ile birbirinden bağımsız şekilde sistemin kullanılmasını sağlar. Docker kullanmadan bir sistemin oluşturulması ekstra çaba gerektiren yorucu bir süreci kapsamaktadır. Yürütülecek tüm işlemler Docker ile birkaç saniyede gerçekleştirilmektedir. Docker hızlı kurulumu için resmi web sitesini buradan ziyaret edebilirsiniz. Docker, yazılım ve sistem için geliştirilmiş olan, açık kaynak özellikli bir sanallaştırma altyapısıdır. 


Docker’ın oluşturmuş olduğu platform ile Web sitelerinin kurulumları, testleri ve dağıtım işlemleri kolaylıkla gerçekleştirilmektedir. Docker’ın en önemli özelliği ise webmaster’ların da sıkça karşılaştığı “Mevcut bilgisayarda çalışıp, sunucuda çalışmama” sorunlarını tamamen ortadan kaldırılmasıdır. Docker sanallaştırma altyapısı, diğer sanal makinelerden (VirtualBox gibi) daha farklıdır ve içerisinde Hypervisor katmanını barındırmamaktadır. Bunların yerine, Docker Engine üzerinden işletim sistemine erişim sağlar ve sistem araçlarını paylaşımlı şekilde kullanır. Docker’ın en büyük avantajı ise çok daha az sistem kaynağı tüketimi sağlamasıdır.

Docker Kavramları ve Terminolojisi Nelerdir? Nasıl Kullanılır?

Docker çalışma prensibini ve ne işe yaradığını anlamak için, genel yapısını incelemek gerekmektedir.

Image

Çalıştırılması plânlanan uygulamaların paket haline getirilmiş şekli olmaktadır. Konteyner ise paket haline getirilen image’lerin çalıştırılacağı alanı ifade eder. 

Dockerfile

Mevcut lokaliniz üzerinde çalışan proje içerisinde, image üretmek amacıyla kullanılan “Config” dosyasına verilen isimdir.

Docker Registry

Docker image’lerin saklanmış olduğu konumu temsil etmektedir. Docker varsayılan olarak Docker Hub üzerinde image’leri tarama yapacak biçimde yapılandırılmaktadır.

Docker Hub

image’lerin paylaşımının yapıldığı ve saklandığı depo özelliğindedir. Docker Hub için, image deposu ifadesi kullanılmaktadır.

Docker Engine

Bir Linux çekirdeği üzerinde çalışmasını gerçekleştirmektedir.

Docker Machine 

Birden çok host’ları oluşturma ve yönetme görevini gerçekleştirmektedir. Bir ya da daha fazla sistem içerisinde “Docker Engine” yükleme işlemlerinde kullanılmaktadır.

Docker Daemon

Bir Linux çekirdeğinin içerisinde bulunan LXC yapısı mantığıyla çalışmaktadır. Docker Daemon’un amacı, konteynerların birbirinden izole olarak çalışmalarını yürütmelerine destek olmaktır.

Docker Client ve Docker Server

Docker Client/Server yapısını oluşturarak kullanmaktadır. Client alanı mevcut hotsumuz ise Server alanı Docker’ın işlem yaptığı host olmaktadır. MacOS ve Windows işletim sistemlerinde Docker kendi Linux’unu oluşturarak, sanal bir Linux üzerinde çalışmasını gerçekleştirir. Özet olarak kendi serverını oluşturmuş olmaktadır. 

Docker Neden Kullanılır?

Günümüz teknoloji dünyasında, kavramlar kullanıcılar tarafından akıl karışıklığına neden olmaktadır. Docker platformu söz konusu olduğunda ise “Docker nedir neden kullanılır”, “Docker nedir ne için kullanılır”, “Docker nedir nasıl çalışır” sorularına cevap vermek gerekir. Docker en basit ifadesiyle, uygulamaların en hızlı şekilde bir araya getirilmesine, test edilmesine ve dağıtma işlemlerinin gerçekleştirilmesine imkan sunan yazılım platformudur. 

Docker, yazılımlarını kitaplıklar, sistem araçları, çalışma zamanları gibi bir yazılımın çalışma sürecinde kullanılan her şeyi, konteyner adı verilen sanallaştırılmış olan birimler şeklinde paketleme işlemini gerçekleştirmektedir.

Docker kullanımı ile her veri ortamına hızlı bir şekilde uygulama dağıtarak, ölçeklendirme yapabilmekte, kodların doğru çalıştığından emin olabilmektedir. AWS (Amazon Web Services) dünyada kullanımı en yaygın olan, yüksek kapsamlı bir bulut platformudur.

AWS üzerinde Docker çalıştırıldığında, geliştirici ve yönetici birimlere her ölçekte dağıtımı yapılan uygulama oluşturma, uygulama gönderme ve uygulamaları çalıştırmanın üst seviyede güvenilir yolunu sağlamaktadır. Aynı zamanda düşük maliyetli bir çözüm sunmaktadır. 

Docker Compose Nedir? Ne İşe Yarar?

Docker Compose, oldukça kompleks uygulamaların tanımlanmasında ve çalıştırılmasında kullanılan bir Docker aracı görevindedir. Docker Compose yardımıyla birden çok konteyner (Container) tanımlaması tek dosya içerisinde yapılabilmektedir.

Docker Compose tek komut ile uygulamanın ihtiyacı olan tüm gereksinimleri harekete geçirerek uygulamayı çalıştırmaktadır. Docker Compose aracılığıyla birden çok konteyner çalıştırılırken, mevcut konteynerlardan seçili olanların birbirlerine bağımlı kalması da sağlanmaktadır. Örneğin; WordPress’i harekete geçirmek istediğinizde, bir MySQL ve WordPress image tanımlaması yapılabilmektedir.

Devam eden işlem adımlarında WordPress’in veri tabanını da (MySQL) bağlı (Depent) hale getirebilmektedir. Bu işlem sayesinde veri tabanı harekete geçerek, uygulamanızı (işlemi başlatılan WordPress’i) çalıştırmış olmaktadır. Docker Compose temel kullanım alanlarının dışında farklı amaçlarla da kullanılmaktadır. Bunlar;

  • Development Environments: Yazılım ve donanım süreçlerine yeni adapte olanlar için Compose yardımıyla daha kısa sürelerde geliştirme yapılabilecek bir ortam hazırlanabilmektedir.
  • Automated Testing Environments: CI Pipeline için kullanılmaktadır. CI (Continuous Integration) sürekli entegrasyonu ifade etmektedir. süreç Pipeline (boru hattı) üzerinden yürütülmektedir. Test otomasyonlarında çalıştırılan uygulamalar ve Script’ler için uygun olmaktadır.
  • Single Host Deployments: Mevcut olan tek host’un üzerinde tüm işlemlerin yapılabilmesi, her şeyin çalıştırılabilmesi sağlanmaktadır.

Docker Swarm Nedir?

Docker Swarm, yönetici (Master) ve yönetilen (Worker) olarak ifade edilen makinelerin oluşturmuş olduğu ağa verilen isimdir. Docker Swarm, çoklu ana bilgisayar (Multiple Host) üzerinde birden çok örneği (Instance) harekete geçirerek, tek bir hata noktası (Single Point Of Failure) sorunlarını çözümlemek amacıyla Docker ile beraber sunulmuş olan servis özelliği taşımaktadır.

Docker Swarm kavramının detaylarını incelemeye başlamadan önce, konuyla ilgili en çok sorulan sorulardan biri olan “Docker id nedir?”e yanıt vermek yerinde olacaktır. Docker çalışma sisteminde bütün konteynerların bir ID’si bulunmaktadır. Docker ID tanımı, bunu ifade etmektedir. Docker Swarm çalışma prensibi içerisinde konteynerların tüm ID lerini istek gönderildiğinde listelenmektedir. 

Docker Swarm problem çözme süreçlerinde farklı alanlarda da destek sunmaktadır. Bunlar;

  • Entegre edilmiş Cluster Yönetimleri (Container Orchestration)
  • Ölçekleme problemleri (Scaling)
  • Periyodik olarak yapılan güncellemeler (Reduce Downtime Cost)
  • Güvenlik işlemleri (TLS Connection)
  • Sistem yük dağıtımları (Load Balancing)
  • Dahilide bulunan DNS sunucu konuları (Service Discovery)
  • Konteyner’lar arasındaki durum yönetimleri ( Desired State Reconciliation)
  • Bileşenlerin gruplandırılması (Declarative Service Model) kavramlarına çözümler sunmaktadır.

Docker Images Nedir? Nerede Kullanılır?

“Docker İmage Nedir?” sorusuna verilecek en özet tanım şöyledir; Docker image, çalıştırılacak uygulama içerisinde ve alt yapısında çalışan, gerekli işletim sistemi araçlarının bulundurulduğu yapı olarak ifade edilmektedir. Docker image’ler, konteyner yaratırken kullanılan talimatların bulundurulduğu bir şablon özelliği taşımaktadır. “Docker image build” komutu ile birlikte Dockerfile dosyası üzerinden oluşturulan yapı olmaktadır. Docker image, Dockerfile ile ilgili tüm işlemler komutlar zinciri ile meydana getirilmektedir. 

Komut aşamaları ise aşağıdaki şekilde ilerlemektedir;

  • “From” komutu aracılığıyla, “Base image” dosyası referans olarak belirlenir.
  • “Env” komutu ile beraber, genel değişkenlerin atamaları yapılır.
  • “Run” komutu ve konteyner ile beraber “Build” zamanında yapılması gerekli işlemler tanımlanır.
  • “Expose” komutu ile sanallaştırılmış Docker Network içerisinde kullanılacak olan port’lar tanımlanıp, son olarak “Cmd” komutu ile konteyner çalıştırılır ve işleme alınacak tüm komutların tanımlaması yapılır.

Oluşturulmuş olan Dockerfile dosyası “Docker image build image_isim” komutu ile proje derlendiğinde (Build edildiğinde), tüm aşamaların gerçekleşmiş olduğu çıktılardan görüntülenebilmektedir. Tüm işlemlerin ardından yapılan kontrollerde, yeni adlandırılan image ler mevcut lokalde kullanıma hazır bulunmaktadır.

Docker Kubernetes Nedir?

Kubernetes ve Docker kavramları söz konusu olduğunda, sıkça karşılaşılan sorulardan biri de “Kubernetes mi yoksa Docker mı kullanılmalı sorusudur. Aslında her iki kavram da farklı şeyleri ifade eder. Konuya çok da fazla vakıf olmayanların, birbirine uzak kavramlar olduğunu düşündüğü ve varsaydığı Docker ve Kubernetes arasındaki farkı ifade ederek başlamak daha doğru olacaktır.

Öncelikle, Kubernetes ve Docker arasında bir seçim yapılması gerekmemektedir. Kubernetes ve Docker, kapsayıcılı uygulamaların derlenmesinde, teslim edilmesinde ve ölçeklendirmesi ile oldukça iyi bir performansla çalışan, birbirinden farklı teknolojiler olmaktadır.

Docker, bulut platformlarında uygulamaların dağıtımını ya da şirket içi ortamlarda taşınabilir özellikte, kendine yetebilen kapsayıcılar biçimiyle otomatikleştirme işlemini sağlayan, açık kaynak teknolojisi ve geniş kapsamlı dosya biçimi olarak ifade edilmektedir. Docker Inc. ise, açık kaynaklı Docker teknolojisinin Microsoft gibi bulut platformu sağlayıcısında, Linux ve Windows işletim sistemleri üzerinde çalışmasını destekleyen şirketlerden biri olmaktadır. 

Ortamları izole etme, kapsayıcılık haline dönüştürme ihtiyacı ve fikri yeni değildir ancak Docker son zamanlarda varsayılan kapsayıcılık halinde kullanılmaktadır. Docker, kapsayıcılık özelliğindeki uygulamaların paketlenerek dağıtılmasında standart sağlamaktadır. Ancak süreç içerisinde bu durum karmaşık bir hale dönüşebilmektedir.

Çok sayıdaki kapsayıcının koordine edilmesi zaman almaktadır. Aynı şekilde kapsayıcılar arasında iletişim kurma ve ölçeklendirme işlemleri ayrı bir desteğe ihtiyaç duymaktadır. Bu noktada ise Kubernetes devreye girmekte ve tüm aşamalarda destek sunmaktadır. Kubernetes, kapsayıcıların çalışmalarını ve yerlerini denetlemeye yönelik API (Application Programming Interface) uygulama programlama arayüzü sunan, kaynakları düzenlemek için yaratılan yazılım olmaktadır. Kubernetes, Docker çalışma adımlarına zemin ve destek oluşturmaktadır.

Hesabınızı yönetmek için giriş yapın

veya