Docker File Nedir? Docker File Komutları

Asiye Nur Kelle
2 min readMar 20, 2022

Selamlar,

Bu yazımda bir DockerFile dosyasında hangi komutlar bulunur, bu komutlar ne anlama gelir gibi konulardan bahsedip bir DockerFile örneği inceleyecek ve Image’ımızı oluşturacağız.

Öncelikle image ve container kavramlarını küçük bir hatırlayacak olursak;

Image: Bir uygulamanın ve bu uygulamanın içerisinde çalışması gereken tüm ek kütüphanelerin paketlenmiş halidir.

Container: Yarattığımız Image’ın çalıştırılmış halidir.

Bu doğrultuda bir Image’ı oluşturabilmek için öncellikle bir DockerFile dosyası oluşturmamız gerekir. Bu dosya oluşturulduktan sonra Image oluşur. Image’ımızı çalıştırdığımızda ise Container ayağa kalkar.

DockerFile Nedir?

Dockerfile, bir docker image’ ın nasıl oluşturulacağının komut komut belirtildiği yaml formatındaki dosyadır. Docker, bu dosyanın içerisinde bulunan komutları satır satır çalıştırır ve image’ımızı hazır hale getirir.

Dockerfile komutlarına geçmeden önce ilk dikkat etmemiz gereken konu dockerfile dosyamızın ismi mutlaka ve mutlaka Dockerfile şeklinde olmalı ve hiçbir uzantıya sahip olmamalıdır.

  1. FROM komutu

Her Dockerfile’da bulunması gereken ilk komuttur.Komutların arasından tek mecbur olanıdır. Bu komut bize oluşturacağımız Image’ın hangi image kullanılarak oluşturulacağını belirtir. Yukarıdaki örnekten bakacak olursak, image’ı oluştururken ubuntu image’ının latest versiyonunu kullanarak Image’ımızı oluşturmasını istedik.

2.RUN komutu

Image oluşturulurken terminalde bir komut çalıştırmak istediğimiz durumlarda bu komutu kullanırız.

3.WORKDIR komutu

Terminaldeki “cd” komutu ile istediğimiz klasöre geçmek yerine bu talimatla çalışma dizinini belirterek, çalışmaya ordan devam edebiliriz. WORKDIR,eğer belirttiğimiz klasör yoksa bizim için otomatik olarak oluşturur.

4.COPY komutu

Image içerisine herhangi bir dosya veya klasör kopyalamak için kullandığımız komuttur.

5.ADD komutu

COPY ile aynı işi yaparak dosya ya da klasör kopyalamamızı sağlar. Fakat ADD, dosya kaynağının bir url olmasına da izin verir.

6.EXPOSE komutu

Yaratacağımız image’dan oluşturulacak container’lara hangi portlar üzerinden erişilebileceğini belirttiğimiz komuttur. Default olarak TCP protokolünü kullanır. Örnekte 80 portunu ve TCP protokolünü kullanmasını söyledik.

7.CMD komutu

Yaratacağımız image’dan container yaratıldığı zaman varsayılan olarak çalıştırılmasını istediğimiz komutu CMD ile veririz.

8.ENTRYPOINT komutu

CMD ile aynı işi yapar.CMD’yi container çalışırken override edebiliriz ancak ENTRYPOINT ile Runtime’da override gerçekleştiremeyiz.

Her docker image’ında bir ENTRYPOINT veya CMD komutu bulunması gerekir.Eğer bu iki komut bir arada bulursa Docker, CMD’de yazılanları ENTRYPOINT komutuna parametre olarak ekler.

9.HEALTHCHECK komutu

Bu komut ile Container’ın çalışma durumunu kontrol ederiz. Yukarıdaki örneğe bakacak olursak uygulamayı her 5 dakikada bir kontrol eder ve 3 saniye içerisinde de uygulamadan cevap vermesini bekleriz.

Örnek bir Dockerfile dosyasına göz atacak olursak;

  • Bu Dockerfile dosyasında ilk olarak yaratacağımız image için base Image olarak ubuntunun 18.04 versiyonunun kullanılmasını söylüyoruz.
  • Daha sonra bu klasörde bulunan tüm dosyaları image’ın içerisindeki app klasörüne kopyalıyoruz.
  • Kopyalama işlemi bittikten sonra bu app klasörüne geçiş yapıyoruz.
  • Ardından yükleme işlemlerimizi gerçekleştiriyoruz.
  • Container’ın içerisindeki uygulamanın 5100 portundan çalışacağını ve bu portan erişilebileceğini bildiriyoruz.
  • Ve son olarak index.py uygulamamızı çalıştırıyoruz.

Eveet Dockerfile dosyamızı hazırladık peki burdan sonra Image’ımızı nasıl oluşturacağız kısmına gelicek olursak;

Yukarıdaki komut ile artık image’ımızı yarattık ve ona bir tag atadık. Bu aşamada Dockerfile’ımız adı birebir “Dockerfile” şeklinde ise onu yazmadan da ilerleyebiliriz.

Image’ımızı yarattık Container olarak çalıştırmak istersek,

Image’ımızı DockerHub’a yollamak istersek,

Yazının sonuna gelmiş bulunuyoruz. Keyifli okumalar, iyi çalışmalar.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Asiye Nur Kelle
Asiye Nur Kelle

Written by Asiye Nur Kelle

Software Developer in Test @Trendyol

No responses yet