Docker Nedir ?

Sefik Can Kanber
4 min readJun 6, 2020

Merhaba arkadaşlar,

Bu makalemde Docker’ın ne olduğundan, bize ne gibi kolaylıklar sağladığından ve temel Docker komutlarından bahsedeceğim.

  • Docker Kurulumu:

Kuruluma başlamadan Docker’da sıklıkla kullandığımız terimlerin anlamlarını açıklayacağım:

Docker cli: Kullanıcının Docker-Daemon ile iletişime geçebilmesi için gerekli komut setini sağlar.

Image: İnternetten (docker hub) indirilen ve oluşturulan şablona denir.

Container: Docker Deamon tarafından birbirinden izole olacak şekilde çalıştırılan process’lere denir.

Docker Repository: Image’lerin oluşturduğu yapılardır.

Docker Deamon: Bütün CPU, Ram vb. işletim sistemine ait işlemlerin yapıldığı bölümdür. Hypervisor’a benzer. (Hypervisor için bknz.)

Dockerfile: Image’in detaylarını tanımladığınız dosyaya denir. Burada satır satır ne yapmak istediğimizi belirtiriz. (Diğer makalemde detaylı olarak bahsedeceğim.)

İlk olarak bilgisayarımızdaki işletim sistemine göre Docker’ı kurmalıyız. Bunun için buradan Docker Hub’a gidip uygun işletim sistemine göre ilgili kurulum adımlarını takip edip tamamladıktan sonra Docker işletim sisteminiz üzerinde çalışmaya başlayacaktır.

Kurulum başarılı bir şekilde gerçekleşti ise cmd ekranında docker — version yazdığımızda aşağıdaki gibi versiyon bilgisinin gelmesini bekleriz.

  • Nedir bu Docker ?

Developer: “Local’imde çalışıyordu sunucuda neden çalışmadı acaba?” 😆

sorusuna çözüm getirmesi için Docker vb. yapıları kullanırız.

Docker, container teknolojisini kullanarak uygulamanın geliştirilmesini, testini ve kurulumunu kolaylaştıran açık kaynak kodlu bir platformdur. Docker’ın, sanal makinelerine kıyasla daha esnek bir yapıya sahip olması ve tamamen ücretsiz olması tercih edilmesinde büyük rol oynamaktadır. Geliştiriciler, geliştirme ortamlarını bu container’ler içerisine gerekli ayarlamalar ile birlikte paketleyerek istedikleri ortama aktarabilirler.

  • Peki elimizde Virtual Machine’lar varken neden Docker’a ihtiyaç duyalım ?

Yukarıdaki resim ile birlikte ikisi arasındaki farkı açıklamaya çalışacağım.

  • İlk olarak bahsetmek istediğim konu: İşletim sistemleri. Her sanal makine Hypervisor aracılığı ile kendine ait işletim sistemi kopyasını kullanmaktadır. Docker ise işletim sistemi bağımlılığını ortadan kaldırarak izolasyonu sağlar ve bu yüzden sanal makinelere göre daha dinamik bir yapıya sahiptir.
  • Sanal makineler donanım düzeyinde sanallaştırma yaparken, Docker işletim sistemi düzeyinde sanallaştırma yapmaktadır.
  • Docker tamamen sanallaştırılmış bir sistem olduğu için sadece kendisine ayrılan kaynağı kullanır. Ayrıca sistemde kullanılan Container’lar arasındaki kaynak kullanımını da kendisi otomatik olarak yönetir.
  • Docker’ın bir başka ve işimizi kolaylaştırdığı diğer konusu ise sunuculara kurulum işlemleridir. Ağ, depolama ve işletim sistemi gibi detayları uygulamadan izole ettiğimiz için Container’ları başka bir ortama taşıdığımızda da çalışacaktır.
  • Sanal Makinelerin başlatılması dakikalar alırken, Docker Container’inin başlatılması saniyeler almaktadır.
  • Sanal makinelerde güncelleme ve güvenlik işlemlerini yönetmek Docker’a göre çok daha zordur.
  • Temel Docker Tanımları ve Komutları

→ -d: Docker komutumuzun terminali bloklamadan arka planda çalışmasını sağlar.

→ -a: Ekran çıktılarının detaylı olarak görünmesini sağlar.

→ -p: Container’ın ilgili işletim sistemi host’una hangi bağlantı noktalarının map’leneceğini söyler.

→ -n: Container’a isim vermek için kullanılır.

→ docker ps: Çalışan Container’ları listelemek için kullanılır.

→ docker stop <container-name>: İlgili Container’ı durdurmak için kullanılır.

→ docker rm <container-name>: İlgili Container’ı silmek için kullanılır.

→ docker images veya docker image ls: Yüklü Image’ları listelemek için kullanılır.

→ docker pull <image-name>: İlgili Image’ın Docker Hub üzerinden indirilmesini sağlar. Örneğin; docker pull mysql

→ docker rmi <image-id>: İlgili Image’ı silmek için kullanılır.

→ docker pause <container-name>: Çalışan, ilgili Container’ı duraklatmak için kullanılır.

→ docker unpause <container-name>: Durdurulan Container’ı tekrardan başlatmak için kullanılır.

→ docker stop <container-name>: Çalışan Container’ı komple silmek için kullanılır.

→ docker start <container-name>: Container’ı başlatmak için kullanılır.

→ docker inspect <container-name>: İlgili Container’ın detaylı bilgisini görmek için kullanılır.

→ docker ps -a -q: Listelenen Container’ların sadece id bilgisini döndürür.

→ docker rm $(docker ps -a -q): Tüm Container’ları siler.

→ docker ps -a: Tüm Container’ları gösterir.

→ docker rm -f <container-name>: İlgili Container’ın çalışıp çalışmamasına bağlı olmadan silmek için kullanılır.

→ docker run docker-image-name: Docker’da ilgili Image’i çalıştırmak için kullanılır. Öncelikle Image’in yüklü olup olmadığının kontrolünü yapar. Eğer Image sistemde yoksa Docker üzerinden Image çekilir ve run edilir. Sistemde daha önce kullanılmış bir Image ise tekrar çekilmeye gerek kalmadan Docker tarafından çalıştırılır.

→ docker run -d -p — restart always <container-name>: Olası sunucu çökmesi durumlarında ilgili Container’ı otomatik olarak yeniden başlamasını sağlamak için restart always‘i ekleriz.

→ export DOCKER_CONTENT_TRUST = 1: Docker Hub‘da bulunan tüm Docker Image’lerinin orijinalliğini, bütünlüğünü ve yayınlanma tarihinin doğrulanmasına olanak tanır. Varsayılan olarak kapalıdır. Güvenlik için gereklidir. Bu özelliği açmanızı tavsiye ederim.

Ben sıklıkla yukarıdaki Docker komutlarını kullanıyorum. Bunun dışında, benim bahsetmeyi unuttuğum ya da daha önce kullanmadığım Docker komutlarına göz atmak isterseniz “dockerhub.com” adresini ziyaret edebilirsiniz.

Umarım Docker ile ilgili faydalı bilgiler verebilmişimdir.

İyi çalışmalar.

--

--