Docker Nedir ? Docker Kavramları ve Anlamları Nelerdir ? Docker Ne İşe Yarar ?

  • Emir Eskici
  • 15 Dec 2022
Docker Nedir ? Docker Kavramları ve Anlamları Nelerdir ? Docker Ne İşe Yarar ?

Docker Nedir ?

Öncelikle docker ne işe yarar ona bir bakalım;

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ı Terminolojisi ve Anlamları Nelerdir?

Dockerfile

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

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.

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 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 Engine

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

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

Description

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;

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

  • Single Host Deployments :
    Mevcut olan tek host’un üzerinde tüm işlemlerin yapılabilmesi, her şeyin çalıştırılabilmesi sağlanmaktadır.

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

Description

Docker Images Nedir ?

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 ;

  • Env” komutu ile beraber, genel değişkenlerin atamaları yapılır.
  • From” komutu aracılığıyla, “Base image” dosyası referans olarak belirlenir.
  • 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 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 ;

  • Entegre edilmiş Cluster Yönetimleri (Container Orchestration)
  • Ölçekleme problemleri (Scaling)
  • Periyodik olarak yapılan güncellemeler (Reduce Downtime Cost)
  • Sistem yük dağıtımları (Load Balancing)
  • Güvenlik işlemleri (TLS Connection)
  • 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.
Size yardımcı olmamı
ister misiniz ?