Docker Nedir? Ne için Kullanılır?

10
Docker, kapsayıcılar ve kapsayıcı tabanlı uygulamalar oluşturmayı kolaylaştıran açık kaynaklı bir projedir. Aslen Linux için geliştirilen Docker, artık Windows ve MacOS'ta da çalışır vaziyettedir. Docker'ın nasıl çalıştığını anlamak için öncelikle kullanacağımız bazı bileşenlere bir göz atmamız gerekiyor.

Docker, "konteyner" adı verilen yazılım paketlerini çalıştırmak için kullanılmaktadır. Konteynerlar uygulama geliştirirken çevresinden tamamen izole bir ortam sağlar. Her Docker kapsayıcısı bir Dockerfile ile başlar. Dockerfile, bir Docker görüntüsü oluşturma talimatlarını içeren, anlaşılması kolay sözdiziminde yazılmış bir metin dosyasıdır.
►İlginizi Çekebilir: Açık Kaynak Veri Tabanı Nedir?
 

Dockerfile

Dockerfile; diller, çevresel değişkenler, dosya konumları, ağ bağlantı noktaları ve ihtiyaç duyduğu diğer bileşenlerle birlikte kapsayıcının temelini oluşturacak işletim sistemini ve çalıştırdığımızda konteynerin gerçekte ne yapacağını belirtir.

Docker Image

Dockerfile'ınızı yazdıktan sonra, o Dockerfile'a dayalı bir görüntü oluşturmak için Docker build yardımcı programı çalıştırılır. Dockerfile, görüntünün nasıl oluşturulacağını söyleyen talimatlar dizisi iken bir Docker Image, konteynırın hangi yazılım bileşenleri için ve nasıl çalışacağı özelliklerini içeren taşınabilir bir dosyadır.

Docker’da aşağıdaki üç aşamaya ihtiyaç duyulmaktadır.

1)Tanım Dosyası: Konteynerımızın içindeki ayarlamaların yapıldığı kısım
2)İmaj: Tanım dosyasını build ederek bir imaj yaratılır
3)Konteyner: İmajı çalıştırılarak oluşturulur.

 

Docker Nasıl Çalışır?

Docker teknolojisi, Linux ve Cgroups gibi çekirdeğin özelliklerini kullanır. Bağımsız olarak çalışabilmeleri için süreçleri ayıran Docker’ın bağımsızlığı, farklı sistemlerle sahip olacağınız güvenliği korurken altyapınızı daha iyi kullanmak için birden çok işlemi ve uygulamayı birbirinden ayrı çalıştırma yeteneği sunar. Docker dahil olmak üzere kapsayıcı araçları, görüntü tabanlı bir dağıtım modeli sağlar.

Linux kapsayıcılarının üzerine inşa edilen bu araçlar, kullanıcılara uygulamalara benzeri görülmemiş erişim, hızlı bir şekilde dağıtma ve sürüm dağıtımını kontrol etme yeteneği sağlar.


 
►İlginizi Çekebilir: Sanal Bellek Nedir? Nasıl Çalışır?
 

Docker’ın Avantajları

Modülerlik: Docker'ın konteynerleştirme yaklaşımı, bir uygulamanın tamamını kaldırmak zorunda kalmadan güncellemek veya onarmak için bir uygulamanın bir bölümünü kaldırma yeteneğine odaklanır.

Katmanlar ve görüntü versiyon kontrolü: Her Docker görüntü dosyası, tek bir görüntüde birleştirilen bir dizi katmandan oluşur. Görüntü değiştiğinde bir katman oluşturulur. Kullanıcı, çalıştır veya kopyala gibi bir komutu her belirttiğinde, yeni bir katman oluşturulur.

Rollback: Katmanlamanın belki de en iyi yanı, geri dönme yeteneğidir. Her görüntünün katmanları vardır. Bir görüntünün mevcut yinelemesini beğenmediğinizde önceki sürüme döndürebilirsiniz. Bu, çevik bir geliştirme yaklaşımını destekler.

Hızlı dağıtım: Yeni donanımı kurmak, çalıştırmak, tedarik etmek ve kullanılabilir duruma getirmek önceden büyük bir zaman ve emek alırdı. Ayrıca bu süreç, büyük maddi harcamalara da neden olurdu. Docker tabanlı konteynerler, dağıtımı saniyelere indirebilir. Her işlem için bir konteyner oluşturarak, bu işlemleri yeni uygulamalarla hızla paylaşabilirsiniz.

 

Docker'ı Kullanmanın Sınırlamaları Var mı?

Docker, tek başına tek konteyner yönetebilir. Yüzlerce parçaya ayrılmış konteynerler ve kapsayıcı uygulama ile yönetim ve düzenleme zorlaşabilir. Sonunda, tüm kapsayıcılarınızda ağ oluşturma, güvenlik, telemetri ve daha fazlasını sunmak için bir geri atmanız ve konteynerleri gruplandırmanız gerekir.
 

Docker vs Sanal Makine

Yukarıdaki şekilde görüldüğü gibi sanal makinelerde bilgisayar sunucusunda üç temel katman bulunur. Her sanal makine için kendine özgü işletim sistemi ve gerekli kütüphaneleri vardır. Ancak Docker için bilgisayar sunucusu sadece altyapı ve işletim sistemini içerir. Böylelikle kapsayıcılar yalıtılmış bir şekilde tutulur.


 
Şekil: Docker ve Sanal Makineler karşılaştırması

Daha az kaynak gereksinimi olan kapsayıcılar ile kolaylıkla dağıtım yapılır ve hızlı bir başlangıç gerçekleştirilir. Aynı donanım biriminde daha fazla hizmet çalıştırılırken, maliyetler de azalır.


Kaynaklar:


redhat.com/en/topics/containers/what-is-docker
infoworld.com/article/3204171/what-is-docker-the-spark-for-the-container-revolution.html
docs.microsoft.com/tr-tr/dotnet/architecture/containerized-lifecycle/what-is-docker