Menu

Docker Nedir?

Docker Nedir?

Docker en net tanımlamayla open source bir ‘container’ teknolojisidir. Docker, aynı işletim sistemi üzerinde, yüzlerce hatta binlerce birbirinden izole ve bağımsız containerlar sayesinde sanallaştırma sağlayan bir teknolojidir. Web uygulamalarımızın kolayca kurulumunu, testini, çalışmasını ve deploymentını sağlar. Bunun yanında sunucu maliyetlerini önemli ölçüde azaltır.

Docker, uygulamaların farklı ortamlarda çalıştırılması sürecinde kullanılan bir platformdur. Uygulamamızı derler, ölçeklendirir, paketler ve dağıtmamızı sağlar. Docker içerisinde barındırdığı container yapısını ve Docker Hub üzerinden indirilen image’ları kullanarak ürünü farklı işletim sistemi, versiyon ve environment’larla birbirinden izole şekilde çalıştırır; yeterli kaynak ve gerekli yapılandırmalar ile birlikte kullanıldığında, yapısal problemleri ortadan kaldırarak uygulamalarımızı stabil bir şekilde çalışabilecek hale getirir.

Docker Daemon: Hypervisor’ün dockerdaki karşılığıdır. Bütün CPU ve RAM vb gibi işletim sistemine ait işlerin yapıldığı bölümdür.

Container Nedir?

Docker Daemon tarafından Linux çekirdeği içerisinde birbirinden izole olarak çalıştırılan process’lerin her birine verilen isimdir. Virtual Machine (Sanal Makina) analojisinde Docker’ı Hypervisor’e benzetirsek fiziksel sunucu üzerinde halihazırda koşturulmakta olan her bir işletim sisteminin (sanal sunucunun) Docker’daki karşılığı Container’dır.

Image Nedir?

Containerlar layer halindeki Image’lardan oluşur. Docker Image ise containerlara kurulacak ve run edilecek olan uygulamaların veya OS’lerin image dosyalarıdır. Örnek verecek olursak mysql, mongodb, redis, ubuntu, mariadb.. Yüzlercesi mevcut. Docker Image'lara ulaşmak için Hub Docker adresine göz atabilirsiniz.

Hangi Platform ve Dilleri Destekler?

Docker, Windows, Mac ve Linux üzerine kurulabilir.

Java, C#, Python, Php, Grovy, Ruby gibi pek çok dili destekler.

Virtualization (Sanallaştırma) Nedir?

Bir yüksek kapasiteli sunucu üzerine kurulan sanal bilgisayarlardır. Her sanal bilgisayar sunucunun kaynaklarını kullanır ve içerisine farklı işletim sistemleri, uygulama ve uygulama gereksinimleri bulunmaktadır. Aşağıdaki görselde bir sanallaştırma altyapısı bulunmaktadır. 3 adet sanal makine bir sunucu üzerine kurulmuştur.

Containerization (Konteynerleştirme) Nedir?

Containerization, bir sunucu üzerindeki işletim sisteminin diğer container’lar tarafından paylaşılması demektir. Birbirinden farklı uygulamalar, dağıtımlar ve envrionment’ları birbirinden izole şekilde çalıştırır. Aşağıdaki görselin bir Linux ubuntu sunucusu olduğunu varsayalım, ortamlar birbirinden farklı dağıtımlara (Fedora, CentOs, Debian), farklı environment’ ara ve kütüphanelere sahip olabilirler. Docker Hub üzerinden istenen image’lar indirilir ve Docker sunucu sistemindeki kernel’ı kullanarak belirtilen dağıtım üzerinde uygulamamızı çalıştırır.

Sanallaştırma vs. Konteynerleştirme

Container Vs Virtualization

En Çok Kullanılan Docker Komutları Nelerdir?

build: Belirtilen image’ı build edip yükler.

docker build –t 

pull: Belirtilen image’ı Docker hub üzerinden yükler.

Docker pull : 

run: Yüklenen image’ları çalıştırır.

Docker run 

run: Yüklenen image’ları çalıştırır.

Docker run 

run: Yüklenen image’ları çalıştırır.

Docker run 

stop: Belirtilen container’ı durdurur.

Docker stop 

images: Yüklenen image’ları gösterir.

Docker images

ps: Çalışan containerleri listeler.

Docker ps

ps -a: Çalışan ve çalışmayan tüm containerlerı listeler.

Docker ps -a

exec: Container içerisinde işlem yapmak için kullanılır.

Docker exec  

logs: Container logunu ekrana basar.

Docker logs 

inspect: Belirtilen öğenin bilgilerini getirir.

Docker inspect 

rm: Belirtilen container’ı siler.

Docker rm 

rmi: Belirtilen image’ı siler.

Docker rmi 

-t: Container’e isim vermek için kullanılır.

Docker build –t  .

-p: Port vermek için kullanılır.

Docker run –p : 

-e: Environment dışarıdan verildiğinde kullanılır.

Docker run -e  = "value" 

-d: Image’ı arka planda başlatır.

Docker run -d 

Docker Container Örnek

docker run -p 127.0.0.1:3306:3306  --name some-mariadb -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:tag

Örnek komut Mariadb image kurulumu göstermektedir. Docker run ile container çalıştırılır. -p ile yayın yapılacak portlar belirtilir. --name ile container'a isim verilir --name parametresi girmezseniz Docker Engine random bir tane container isim atayacaktır. -e parametresi varsa environment değişkenleri belirtilir. Bu kullanıcı adı,parola vb. olabilir. -d parametresi ise container'ın detach modda çalışacağı belirtilir eğer belirtilmezse container çalışır ve ekrana log kayıtlarını getirir.En son olarak container hangi image ile oluşturulacağı belirtilir. Image'da bulunan tag kısmı ise kullanılacak image dosyasının versiyonu belirtilir. mariadb:10.3 , mariadb:latest , mariadb yazıp herhangi bir tane versiyon belirtmezseniz en son sürün hangisi ise onu kullanır.