Docker Run Komutu ? Docker Dersleri 3

Tekrar Hoşgeldiniz 🙂

Önceki dersimizde bulunan django ve vuejs için yazdığımız dockerfile’ları çalıştırdığınızda uygulama çalışmış ancak siz uygulamaya ulaşamamış olmalısınız. Bunun sebebi çalıştırırken port binding (kendi bilgisayarınızdaki port ile docker container içerisindeki portları eşitlenmesi) işlemini yapılmamış olmasıdır.

-p

-p (Port binding) Docker container’ı ayrı bir bilgisayar gibi düşünürsek, kendi bilgisayarımızdaki portu içeriye yani container’a yönlendirme işlemine port binding denir.

docker run -p 8080:80 {image_id}

Yukarıdaki örnek önceki dersimizde yazdığımız vuejs (JS Frameworkleri) image’ini ayağa kaldırıp port binding işlemi yapacaktır.

8080:80

Yukarıda gördüğümüz ilk kısım bizim bilgisayarımızdan erişmek istediğimiz port numarası. İkinci kısım ise container içerisinde erişmek istediğimiz port numarası.

-d

-d (detached mode) Container service olarak başlar. Ekrana çıktı vermez arka planda çalışır.

docker run -d {image_id_or_tag}

-i

Interaktif mod genellikle -t ile birlikte kullanılır ve container içerisinde komutlar çalıştırabilmeniz için sizden girdi alır.

docker run -it {ubuntu}

–name

Containera ad vermemizi sağlar.

docker run -p 8080:80 -d  --name {name} {image_id} 

–rm

RM parametresi container ile işimiz bittiğinde container’ı siler. ‘İt’ ile birlikte kullanılır. Konsol kapandığında container’ı siler.

docker run --rm -it {ubuntu} 

–env

Container içerisine enviroment variable (ortam değişkeni) göndermemizi sağlar. -e veya –env kulanabilirsiniz.

docker run --rm -it -e env="furkanozkaya.com" ubuntu
docker env

–env-file

Docker run komutu vereceğimiz ortam değişkeni dosyasındaki değişkenleri container içerisine geçer.

docker run --rm -it --env-file {env} {ubuntu} 
docker env file

–restart

Container’ı ne zaman restart etmek istediğinizi belirtebilirsiniz

  • on-failure
  • always
  • unless-stopped
docker run -d --restart unless-stopped {redis}

–network

Container’ın ağa erişimini belirtebilirsiniz

  • none
  • bridge (default)
  • host,
  • container:<name|id>
  • NETWORK

Network tipleri için bilgi almak isterseniz tıklayın.

-v

Docker volumes veritabanı için docker çalıştırdığımızı varsayalım içersine bilgiler ekledik fakat containerımızda hata oluştu ve çöktü containerı tekrar ayağa kaldırdığımızda bilgilerimiz yok olmuş olacak. Bunun önüne geçmek için docker volumes kullanılır. 3 şekilde kullanılabilinir.

  • dosya_yolu:dosya_yolu
  • dosya_yolu
  • volume_adı:dosya_yolu
  1. dosya_yolu:dosya_yolu
docker run -it --rm -v D:\deneme:/home/app/ ubuntu

App içerisinde dosya oluşturduğunuzda aynı dosyanın windows’da da oluştugunu göreceksiniz. Linux içinde aynısı geçerli.

2. dosya_yolu

Sadece container içeresindeki dosya yolunu verdiğinizde docker rastgele bir volume oluşturacaktır. fakat bu volume daha sonra kullanabilmeniz için adını bilmeniz lazım bu yüzden kullanılması önerilmez.

3. volume_adı:dosya_yolu

Volume’u biz oluşturuyoruz adını bildiğimizden dolayı her yerde kullanabiliriz.

docker create volume {volume_adı}

oluşturdugunuz ve rastgele oluşturulan volumeları windows için

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\

içerisinde bulabilirsiniz.

Linux için şu komutu kullanabilirsiniz

docker volume inspect {my-vol}

Çalışma şekli aşağıdaki gibidir.

docker run -v {my-vol}:/home/app/ ubuntu

Docker run kullanırken en fazla ihtiyacınız olan parametler anlatılmıştır. Anlatılmasını istediğiniz parametre veya konu var ise yorumlarda belirtebilirsiniz.

Kaynaklar

https://docs.docker.com/engine/reference/commandline/run/

Add a Comment

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir