Ritim İstanbul A5 Blok No:46, D:112, 34846 Maltepe/İstanbul

Docker nedir, ne için kullanılır? Tanımı & örnekleri

Yazılımla ilgilenen kullanıcıların en çok merak ettiği konular arasında dünya genelinde 13 milyondan fazla geliştirici tarafından kullanılan Docker yer alıyor. Peki Docker nedir, ne için kullanılır? Docker ile sanal makineler arasındaki farklar neler? Docker kullanmanın avantajları nelerdir? Proje yöneticimiz Oğulcan Aslan, Docker ile ilgili tecrübelerini okurlarla paylaşıyor ve daha iyi anlaşılması adına konuya sanal makine (virtual machine) üzerinden giriş yapıyor.

Sanal makine nedir?

Sanal makineler (virtual machine -kısaca VM-) programları gerçek bir bilgisayar sistemindeki gibi çalışmasını sağlayan araçlardır. Aslında gerçek bir bilgisayar gibi hareket eden dosyalar olarak isimlendirilebilir ve bilgisayar içerisinde bilgisayardır olarak tanımlanabilir. Herhangi bir bilgisayar programı gibi bir pencere içerisinde çalıştırılan sanal makineler, işletim sistemi ve bilgisayar arasında sanal ortamı oluşturur ve bu sanal ortam üzerinde yazılımların çalışmasına imkan tanır.

- ADT Çözümleri -
Yönetilen Hizmetler Görseli
Advanced Dynamics Teknoloji'de işletmeler için dış kaynaktan hizmet modeliyle Yönetilen Hizmetler çözümleri sunuyoruz.

Birden çok sanal makine aynı anda tek bir fiziksel bilgisayar çalıştırılabilir. Sunucularda , birden çok işletim sistemi hypervisor (Hypervisor, aynı donanımı paylaşan birden çok işletim sisteminin yan yana çalışmasını sağlayan yazılım katmanına verilen isimdir.) tarafından yönetilerek yan yana çalıştırılır. Her sanal makine işlemci, bellek, sabit sürücü, ağ arabirimi ve diğer cihazlar gibi kendi sanal donanımını sağlar. Sanal donanım, fiziksel makinedeki gerçek donanma eşlenir.

Sanal makine kullanmanın avantajları

Tek bir bilgisayar üzerinde farklı işletim sistemleri çalıştırılabilir ve farklı işletim sistemleri için birden çok bilgisayar kullanımına gerek kalmaz böylece enerji, yer ve maliyet tasarrufu sağlar. Yine tek bir bilgisayar üzerinde kurulu olduğu için yönetim kolaylığı sağlamakla birlikte donanım maliyetini en aza indirir.

Sanal makine kullanmanın dezavantajları

Sanal makineler, fiziksel makinelere göre daha düşük performanslıdır ve bir bilgisayarda çok sayıda sanal makinenin kurulup çalıştırılması fiziksel kaynakların yani donanımın tüketilmesine sebep olur böylece sistemin kararsız çalışmasına ya da hantallaşmasına sebep olabilir.

Konteyner (container) nedir?

Konteyner teknolojisi, herhangi bir işletim sisteminde çalışan uygulama kodunu bir başka işletim sisteminde herhangi bir hypervisora ihtiyaç duymadan çalıştırılabilmesi için, kütüphaneleri ve bağımlılıkları ile birlikte ortak yöntemlerle paketlendiği, yürütülebilir yazılım birimleridir. Bunun için konteynerlar bir çeşit işletim sistemi sanallaştırmasından yararlanılır. Uygulamayı çalıştırmak için ayrı bir işletim sistemi kullanmak yerine sadece uygulama ile ilgili kütüphaneleri ve çalıştırılabilir dosyaları kullanmaya dayanır buda kaynakları daha verimli kullanmamıza olanak tanır.

Konteynerlar, sanal makinelerde yapılan temel donanımı sanallaştırmak yerine işletim sistemini sanallaştırır. Böylece her bir konteyner, yalnızca uygulamayı, kitaplıkları ve bağımlılıkları içerir. Konteynerlerin bu kadar basit ve dolayısıyla hızlı ve taşınabilir olmasının nedeni konuk işletim sistemi bulunmamasıdır.

Docker ve Sanal makine arasındaki farklar

Docker ve klasik sanal makineler arasındaki farkların başında docekerda, sanal makinede bulunan hypervisor katmanının bulunmaması ve konteyner dediğimiz birbirinden tamamen bağımsız ve izole processlerden oluşmasıdır. Docker üzerinde sunduğu tek bir işletim sistemi üzerinde çok sayıda docker konteyner çalıştırabilir ve bu konteynerlar sistem dosyalarını paylaşımlı olarak kullanır bu da kaynak tüketimini oldukça düşürerek maliyeti azaltır.

Sanal makinede ise her makine kendi işletim sistemini kullanır ve kendi kütüphanelerini barındırır. Her sanal makinenin kendi ayrı işletim sisteminin olması ve ana donanımı bölerek sanallaştırması hem maliyeti arttırmaktadır hem de açılış hızının yavaş olmasına sebep olmaktadır ancak docker teknolojisi, konteynerları çalıştırmak için üzerinde host ettiği tek bir işletim sistemine bağlıdır böylece kaynak tüketimi az performans ise yüksek olup hız daha fazladır.

DockerSanal makine
İşletim Sistemi (OS)Küçültülmüş İşletim Sistemi İmajıTam işletim Sistemi
İzolasyonDüşükYüksek
BaşlatılmasıSaniyelerDakikalar
VersiyonlamaYüksekYok
PaylaşılabilirlikYüksekDüşük
Docker nedir?
Docker nedir?

Docker nedir?

Farklılıkları daha net görebilmek adına yukarıdaki tabloyu inceleyebilirsiniz.

Yukarıda sanal makine ve konteyner teknolojileriyle alakalı özet bilgileri verdikten sonra artık docker nedir? Sorusuna geçebiliriz.

Docker, yazılım geliştiriciler ve sistemciler için açık kaynak olarak geliştirilmiş, aynı işletim sistemi üzerinde, çok sayıda birbirinden izole ve bağımsız konteynerlar sayesinde sanallaştırma sağlayan bir platformdur. 

Bu platform sayesinde web sistemlerinin kurulumu, testleri ve dağıtımı kolaylıkla yapabilmekteyiz.

Docker’ın sanallaştırma yapısında, biraz önce yukarıda belirttiğimiz virtual machine içerisinde bulunan hypervisor katmanı yoktur. Bunun yerine Docker Engine üzerinden, konak işletim sistemine ulaşmakta ve sistem araçlarını paylaşımlı bir şekilde kullanır. Böylece klasik sanallaştırma yöntemine göre daha az kaynak tüketimi yapar.

Image

Çalıştırılacak uygulamaların paket halindeki şeklidir konteyner ise paket halindeki image’ların çalıştırılacağı alan demektir.

Dockerfile

Hali hazırda localde çalışan proje içerisinde, image üretmek için kullanılan config dosyasına verilen isimdir.

Docker Registry

Docker imagelarının saklandığı konumu temsil etmektedir.

Docker Hub

İmageların paylaşımının yapıldığ ve saklandığı yerdir. Docker Hub bir nevi image deposudur diyebiliriz.

Docker Daemon (Docker Engine)

Hypervisor’ün tam olarak karşılığı olduğunu daha önceden de söylemiştik. İşlev ise konteyner’ların izole bir şekilde çalışabilmeleri için gerekli yardımı ve ortamı sağlamaktır.

Docker CLI (Command Line Interface)

Docker kullanıcısının, Docker Engine (Docker Daemon) ile haberleşebilmesi için gerekli komut setini sağlar. Yeni bir image indirilmesinden yeni bir konteynerın ayağa kaldırılmasına, çalıştırılmasına, durdurulmasına kadar ya da konteynerlara RAM, işlemci gibi donanım sınırlandırılmasını yapabildiği yerdir.

Neden Docker?

Günümüzde teknolojiyle alakalı terimler kullanılan kelimeler kullanıcılar tarafından çok büyük oranda akıl karışıklığına yol açmaktadır. Docker konusunu basit bir dille anlatmaya çalıştığımız yazıda son olarak neden docker kullanmalıyız sorusunun cevabını verirsek, 

Docker en basit tabirle uygulamaların en hızlı şekilde bir araya getirilmesine, test edilmesine ve dağıtılmasına imkan sunan bir platformdur. 

Docker, yazılımda kullanılan kütüphaneler, sistem araçları, çalışma zamanları gibi yazılım sürecinde kullanılan akla gelebilecek her şeyi konteyner adı verilen sanal birimler şeklinde paketleme işlemini gerçekleştirmektedir. Docker kullanarak hızlı bir şekilde uygulama dağıtılarak, ölçeklendirme yapılabilir ve kodun doğru çalışıp çalışmadığından emin olabilmektedir.

Docker bizlere her ölçekte dağıtımı yapılabilen uygulama oluşturma, uygulama gönderme ve uygulamaları çalıştırmanın üst seviyede güvenilir yolunu sağlamaktadır.

Kaynaklar

Moment.js nedir ve nasıl kullanılır?

JavaScript kütüphaneleri programlama sektöründe sıklıkla karşılaşılan sorunları çözmek ve otomatikleştirmek için geliştirilir. Popüler JavaScript kütüphanelerinden biri de Moment.js'tir. Peki Moment.js nedir ve programlama dünyasında...

JavaScript’te değişkenler ve aralarındaki farklar: var, let & const

JavaScript, web geliştirmenin temel taşlarından biri olarak, dinamik ve etkileşimli web siteleri oluşturmanın anahtarıdır. Bu güçlü programlama dilinin en temel yönlerinden biri, veri saklama...

Fiyat takip yazılımları nasıl çalışır?

E-ticaret dünyası her geçen gün daha rekabetçi bir hal alıyor. Bu ortamda, işletmelerin rakiplerini ve pazar trendlerini yakından takip etmeleri hayati önem taşıyor. İşte...

HTML div elementi ve kullanım senaryoları

Her gün milyonlarca web sayfasını ziyaret ediyor, okuyor veya üzerlerinde işlem yapıyoruz. Peki, son kullanıcılar için görsel olarak renderlanan bu sayfaların arkasındaki kodlarda kullanılan...

React ‘hook’ nedir ve ne için kullanılır?

React hook, React JavaScript kitaplığındaki bir özelliktir. Hook'lar, sınıf bileşenlerine ihtiyaç duymadan, fonksiyon bileşenlerinde durum (state) ve diğer React özelliklerini kullanmaya olanak tanır. İlk...

IPv4 ve IPv6 nedir? Aralarındaki farklar nelerdir?

Her gün internete bağlanıyoruz, ancak teknik olarak internete nasıl bağlandığımızla ilgili bir fikriniz var mı? İnternet, modern yaşamın ayrılmaz bir parçası haline geldi ve...

Daha fazla blog içerik

Moment.js nedir ve nasıl kullanılır?

JavaScript kütüphaneleri programlama sektöründe sıklıkla karşılaşılan sorunları çözmek ve otomatikleştirmek için geliştirilir. Popüler JavaScript kütüphanelerinden biri de Moment.js'tir. Peki Moment.js nedir ve programlama dünyasında...

JavaScript’te değişkenler ve aralarındaki farklar: var, let & const

JavaScript, web geliştirmenin temel taşlarından biri olarak, dinamik ve etkileşimli web siteleri oluşturmanın anahtarıdır. Bu güçlü programlama dilinin en temel yönlerinden biri, veri saklama...

Fiyat takip yazılımları nasıl çalışır?

E-ticaret dünyası her geçen gün daha rekabetçi bir hal alıyor. Bu ortamda, işletmelerin rakiplerini ve pazar trendlerini yakından takip etmeleri hayati önem taşıyor. İşte...

HTML div elementi ve kullanım senaryoları

Her gün milyonlarca web sayfasını ziyaret ediyor, okuyor veya üzerlerinde işlem yapıyoruz. Peki, son kullanıcılar için görsel olarak renderlanan bu sayfaların arkasındaki kodlarda kullanılan...