Dockerfile nedir ?

Sefik Can Kanber
2 min readJun 24, 2020

Merhaba arkadaşlar,

Bu makalemde Dockerfile’ın ne olduğundan ve temel Dockerfile terimlerinden bahsedeceğim. Daha sonra basit bir Dockerfile oluşturup bu Dockerfile’dan Image oluşturarak makaleme son vereceğim.

Bir Container’ın çalışması için

  • İlk olarak Dockerfile oluşturulur.
  • İkinci aşamada, Dockerfile üzerinden Image oluşturulur.
  • Son olarak da bu Image’den Container’ı çalıştırırız.

Dockerfile, Docker Image’inin nasıl oluşturulacağının anlatıldığı bir talimat listesidir.

Docker’da base Image’ımize stract denir. Bizim kurduğumuz Image, Stract Image’ine Parent Image olarak oluşturulur.

  • Dockerfile Terimleri

Örnek bir Dockerfile dosyası oluşturmadan önce Dockerfile’ı oluştururken kullandığımız terimleri açıklayacağım:

→ #: Dockerfile içerisinde yorum satırı eklemek için kullanılır.

→ ADD: İstenilen dosya veya dosyaları Container içerisinde belirtilen dizine eklemek için kullanılır. Url ile indirilen dosyayı belirlediğimiz dizine atmasını da sağlayabiliriz.

→ COPY: Dosya içinde kopyalama işlemi için kullanılır. Herhangi bir Url ile birlikte bu komut kullanılamaz.(Build işleminden sonra dosya kopyalama yapmak için COPY kullanılır)

→ CMD: RUN ile aynı mantıkta çalışır. Farkı, derleme esnasında çalışmamasıdır. Container çalıştığında çalışır.

→ ENTRYPOINT: Container çalıştığında ilk önce yürütülecek komut ve parametreleri ayarlar.

→ EXPOSE: Container içerisinde çalıştırılan Image’lerin hangi port’u dinlemesi gerektiğini set etmek için kullanırız. Bu direktif, port’u direkt dış dünyaya açmaz.

→ FROM: Hangi Image dosyasından kendi Image’ımızı oluşturacağımızı söylediğimiz komuttur.

→ MAINTAINER: Dockerfile’ı oluşturan kişinin ad bilgisi ve e-mail adresini tanımlamamızı sağlar.

→ RUN: Var olan Image’de yeni bir katman oluşturup yeni bir Image oluşturmamızı sağlar. Image’deki yazılımları güncelleme, sertifika güncelleme işlemlerini yapabiliriz.

→ VOLUME: Çalışılan Image’de kalıcı olması gerekecek verileri belirtirken kullanılır. Örneğin, veritabanı sistemindeki dosyalar, web sunucusundaki statik dosyalar, ayar dosyaları vb.

→ WORKDIR: Çalışma klasörünü belirleyen komuttur. Sonrasında gelen komutlar bu klasör içerisinde çalışır.

→ LABEL: Image’ımize etiket eklememizi sağlar. Örneğin, kimin tarafından hazırlandığını LABEL ile belirtebiliriz.

→ HEALTHCHECK: Bu komut ile oluşturulan Docker Image’inin durumu kontrol edilebilir.

* 0 (success): Container sağlıklı ve kullanıma hazır.

* 1 (unhealthy): Container düzgün çalışmıyor.

* 2 (reserved): Container beklenmedik bir şekilde kapandığı durumlarda bu kodu alırsınız.

Örnek vermek gerekirse, aşağıdaki komut uygulamayı her 15 dakikada bir kontrol eder ve 5 saniye içinde sistemin cevap vermesini bekler.

  • Dockerfile Dosyası Oluşturma

Makalemin bu kısmında basit bir Dockerfile nasıl oluştulur bundan bahsedeceğim:

→ İlk olarak yeni bir dizin oluşturalım.

→ Oluşturduğumuz yeni dizine aşağıdaki komut ile geçelim.

→ Bu dizine de aşağıdaki komutları içeren bir Dockerfile oluşturalım.

Dotnet Core Uygulamasını Docker Üzerinde Yayınlamayı sağlar.
  • Image Oluşturma

Örnek Dockerfile’ımızı oluşturduğumuza göre artık Image’imizi bu dosyadan oluşturabiliriz.

→ Dockerfile’ı oluşturduğumuz /docker101 dizininde aşağıdaki kodu çalıştırarak Image’imizi oluşturalım.

Burada name ile oluşturduğumuz Image’in ismini belirledik. İsmi biz vermezsek docker kendisi isim verecektir.

→ Build işlemi tamamlandıktan sonra;

komutunu çalıştırdığımızda oluşturduğumuz Image’i aşağıdaki gibi command line’da görmelisiniz.

Bunun dışında benim bahsetmeyi unuttuğum ya da daha önce kullanmadığım Dockerfile ile ilgili dokümanlara göz atmak isterseniz “dockerhub.com” adresini ziyaret edebilirsiniz.

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

İyi çalışmalar.

--

--