Docker Nedir ve Temel Komutlar Nelerdir?

Kayhan Öztürk
3 min readJun 25, 2022

--

Son zamanlarda yazılım dünyasının en trend ürünlerinden olan docker’ın ne işe yaradığından ve temel komutlarından bahsedeceğiz.

Docker Nedir?

Docker en kısa tanımıyla container teknolojisidir. Peki container teknolojisi tam olarak nedir?

Container teknolojisi ile aynı işletim sistemi üzerinde birbirinden bağımsız yüzlerce, binlerce bağımsız container’lar oluşturarak sanallaştırabilir ve her bir uygulamanın birbirinden bağımsız şekilde çalışmasını sağlayabiliriz.

Sanallaştırma Teknolojisi Nedir?

Sanallaştırma dediğimiz konu aslında çok eskiye dayanan bir konudur. Geçmiş yıllarda BIOS üzerinden hypervisor özelliğini aktif edip, ayrı ayrı component’leri her biri ayrı virtual machine(vm) olarak kullanabiliyorduk.

Bunu şu örnekle daha iyi açıklayabiliriz; sunucu kiraladığımızda, sunucu şirketlerinin sıklıkla bu sanallaştırma teknolojilerini kullandığından bahsedebiliriz. Aynı makina üzerinden sizin gibi pek çok müşteriye ayrı sanal makinalar oluşturulur. Her bir sanal makinanın ayrı işletim sistemi ve kütüphaneleri mevcuttur. Ve size oluşturdukları vm’lerden(virtual machine) birini kiralarlar. Fakat bu yöntem hem performans hem de kaynak tüketimi açısından çok olumlu sonuçlar doğurmadığı için yerine container teknolojisinin geldiğinden bahsedebiliriz.

Container ve VM Farkları Nelerdir?

  • Her VM’in(virtual machine) kendine ait bir işletim sistemi varken, container’lar yalnızca bilgisayar üzerindeki ana işletim sistemini kullanır.
  • VM’lerde her birinin ayrı işletim sistemi olduğu için RAM ve CPU kullanımı, container’lara göre daha fazladır.
  • VM’ler makinada daha fazla alana ihtiyaç duyarken, container’lar daha az alana ihtiyaç duyarlar.

Docker Image Nedir?

Docker image’i, çalışacak uygulamamızın ihtiyaç duyduğu kütüphane dosyalarını barındıran yapılar gibi düşünebiliriz. Container’lar ise bu image’lerin çalışmasından meydana gelirler. Docker image’leri kendi projelerimiz için custom şekilde oluşturabileceğimiz gibi binlerce geliştirici tarafından hazırlanmış docker image’lerini de kullanmamız mümkündür. Cassandra, mongodb, redis, ubuntu, nodejs gibi tonlarcasının mevcut olduğu adresimiz şurasıdır: Docker hub — https://hub.docker.com/_/mongo

Diğer bir deyişle; uygulamanın bağımlılıklarını ve kendi library’lerini içeren salt okunur bir snapshot’tır diyebiliriz. Uygulamayı ayağa kaldırmamızı sağlayan bir yapı olarak düşünebiliriz.

Kendi geliştirdiğimiz uygulamaları dockerize etmek istediğimizde yani image’ini oluşturmak istediğimizde ise Dockerfile dosyasına ihtiyaç duyarız. DockerFile’a tarif olarak komutlar veriyoruz gibi düşünebiliriz. Dockerfile’da verilen tüm komutlar satır satır çalıştırılarak layer’lar oluşturulur. Docker build tamamlandıktan sonra docker image oluşacaktır.

Docker build için örnek komut:

docker build -t node-app .

Tüm image listesini görüntülemek için:

docker images

Yukarıdaki komuttan sonra oluşan image’i ise şu komut sayesinde çalıştırabilir ve container ayağa kaldırabilirsiniz:

docker run node-app

Docker Hub Nedir?

Docker Hub, docker image’lerinin paylaşılabileceği bir online servisin adıdır. Bu serviste Docker tarafından ya da kullanılacağımız teknoloji sahipleri tarafından yaratılan official ve non-offical imajlara erişim sağlayabiliriz.

Docker Hub üzerinde bulabileceğimiz binlerce image mevcuttur. Buradan projemizde kullanacağımız istediğimiz image’leri indirebilir ve kullanabiliriz.

Docker hub üzerinden ihtiyacınız olan image’leri aşağıdaki komutlar ile indirebilirsiniz:

docker pull ubuntu

docker pull nodejs

docker pull mongodb

Container Nedir?

İşletim sistemi üzerinde birbirinden izole şekilde çalışan process’lerin her birinin adına container adı verilir. Image’leri çalıştırdığımızda elde ettiğimiz process’e verilen isimdir. Docker image’larının çalışır halleri gibi düşünebilirsiniz. Bir docker image’inden birden fazla process yani container yaratabilmemiz mümkündür.

Örnek olması açısından şuna benzetilebilir: bilgisayarınıza spotify uygulamasını kurduğunuzu varsayalım. Şu an elinizde bu uygulamanın kaynak kodları mevcut ancak aktif olarak çalışmıyor. Bu kaynak kodları docker image’a benzetebilirsiniz. Spotify uygulamasını tıklayıp açtığınızda ise bu uygulamanın çalışan versiyonunu görmüş oluruz. Aslında image’ların çalışan versiyonlarına container diyebiliriz.

Tüm container’ları listelemek için kullanabileceğiniz temel komutlar:

docker ps

docker container ls

Çalışır durumdaki container’ı durdurmak için:

docker stop node-app

--

--