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.