14 Aralık 2020 Pazartesi

Docker Container Yapısı -2

 


Bu yazıda Docker Container yapısında yer alan Docker CLI kullanımına, komutlarına ve bilmemiz gerek temel özelliklere değinmeye devam edeceğim. Dilerseiz buradan Docker Container hakkında ki ilk yazıma ulaşabilirsiniz.

Ben örnek olması açısından Docker Hub üzerinde, içinde nginx ve html olan bir image oluşturdum. Bu yazımda bu image üzerinden ilerleyeceğim. Docker Hub üzerinde image oluşturma kısmına ileride detaylı olarak değineceğim.

Oluşturduğum bu docker image'sinden bir container oluşturduğumuzda localhost' umuzda nginx üzerinde çalışan bir html web sayfası ayağa kalkacak ve yayına başlayacak. Bu docker container'ı oluşturan Dockerfile dosyasını incelemek isterseniz buradan ulaşabilirsiniz.

Container'ı oluşturarak işle başlayalım:

docker container run -d -p 8282:80 --name htmlcontainer emrahakin/htmlsite

Not: burada kullandığımız -p komutu port anlamına geliyor. Container'ımızı istediğimiz bir porttan ayağa kaldırabiliriz ben 8282 portunu kullandım. -d komutu ise container'ımızı detach mode (arka planda çalıştırmak) ile çalıştıracağımızı belirtir. Bu komutlara ileride detaylı olarak değineceğim.

Uygulamamızı ayağa kaldırdıktan sonra terminal satırına aşağıda ki kodu yazarsak çalışan containerlarımızı listelemiş oluruz.

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
21ba7d5780ca emrahakin/htmlsite "/docker-entrypoint.…" 14 minutes ago Up 3 minutes 0.0.0.0:8282->80/tcp htmlcontainer

Ekran çıktısında, emrahakin/htmlsite image'sinden türeyen, htmlcontainer adında bir container'ın 3 dakikadır ayakta olduğunu görüyoruz.

Bu container içerisinde bir nginx server çalıştığı için, container oluşturulduktan sonra çalışmasına devam ediyor. Bir önce ki yazıda olduğu gibi tek sefer çalışan bir uygulama yerine devamlı çalışan bir web uygulaması ayağa kaldırmış olduk.

Şuan da docker'ın yüklü olduğu makinede (localhost) bir web tarayıcı açıp adres olarak localhost:8282 yazarsanız karşınıza aşağıda ki sayfa gelecektir.











Peki makinemizde bir nginx server yüklü değilken bu html sayfa nasıl çalıştı?

Esasında bu sorunun cevabı neden docker kullanıyoruz ile aynı. Çünkü biz container'ımızı içinde nginx yüklü olan ve bu nginx server da html sayfa çalıştıran bir docker image den oluşturduk.

"docker container ls" komutu ile çalışan container'larımızı listelediğimiz zaman her biine bir CONTAINER ID atadığını görürüz. Bu CONTAINER ID bizim ilgili container üzerinde işlem yapabilmemiz için docker tarafından atanan Unique ID lerdir.

Mesela bu container'ın loglarını görmek istersek:

docker container logs CONTAINER ID (bende 21ba7d5780ca)

CONTAINER ID sinin tamamını yazmanıza gerek yok ilk 4 hanesi de size istediğiniz sonucu verecektir.

docker container logs 21ba


Container Durdurmak:
stop komutu ile çalışan bir container'ı durdurabiliriz:
docker container stop 21ba

"docker container ls" komutunu çalıştırdığımızda container'ımızın artık bu listede olmadığını görebiliriz. "docker container ls" komutu sadece çalışan container'ları listeler. Containerlarımızın tamamını görmek istiyorsak "docker container ls -a" komutu ile listeleme yapmalıyız.

docker container ls -a

Bu komutu çalıştırdığımızda docker engine içinde yer alan çalışan ve durdurulmuş tüm containerların listesini görebiliriz.

Container Çalıştırmak:
start komutu ile durdurulmuş bir container'ı aynı özellikleriyle yeniden çalıştırabilriz:
docker container start CONTAINER ID (bende 21ba)

duran container'ımızı yeniden çalıştırdıktan sonra "docker container ls" komutuyla yeniden çalışan containerlar listesinde container'ımızı görebiliriz.

Container Silmek:
Container'ı durdurmak ile silmek aynı şey değildir. Eğer zaten durdurulmuş bir container'ı silmek istiyorsak:
docker container rm CONTAINER ID (bende 21ba)

Eğer çalışan bir container'ı silmek istiyorsak: Burada iki opsiyonumuz bulunmakta önce çalışan container'ı "stop" komutu ile durdurabilir ardından silebiliriz yada çalışır vaziyette iken

docker container rm -f CONTAINER ID (bende 21ba)

komutuyla silebiliriz. -f burada force anlamına gelmektedir.

Aynı anda birden fazla container'ı da silebiliriz bunun için "docker container rm" komutundan sonra silinmesini istediğimiz containerların ID lerini aralarında boşluk bırakarak yazmamız yeterli olacaktır.

docker container rm CONTAINER ID1 CONTAINER ID2 CONTAINER ID3 ...

Benzer Yazılar

0 yorum:

Yorum Gönder