16 Kasım 2020 Pazartesi

Docker Container Yapısı -1

Bu yazıda Docker Container yapısında yer alan Docker CLI kullanımına, komutlarına ve bilmemiz gerek temel özelliklere değinmeye çalışacağım.

Docker CLI (Command Line Interface): Bir docker kurulumu yaptığımızda sisteme yüklenen ve o Docker Engine yi yönetmemizi sağlayan komut satırı ara yüzüdür.

terminal satırına aşağıda ki komutu yazarak makinemizde kurulu olan docker engine hakkında bilgileri görelim:

docker info

komut çalıştırıldığında, makinemizde kurulu olan docker engine hakkında ki bilgileri ekrana yazar.




Çıktıda göreceğimiz gibi mevcutta kaç containerımız var, bu containerların kaç tanesi çalışıyor kaç tanesi durmuş durumda gibi temel bilgilere docker info komutu ile ulaşabiliriz.

Docker içinde kullanabileceğimiz bütün komutlara erişmek için komut satırına "docker" yazmamız yeterli olacaktır

docker

Terminal satırına "docker" komutunu yazıp çalıştırırsak Docker içinde kullanabileceğimiz bütün komutları görmüş oluruz.




Ekran çıktısında Management Commands ve Commands başlıkları altında kullanabileceğimiz komut formatlarını görebiliriz.


Docker ilk ortaya çıktığında komut satırı docker command ( docker run hello-world gibi) şeklindeydi. Bu kullanım Docker'ın geriye dönük uyumlu olamak istemesinden hala çalışıyor.
Docker geliştikçe ve daha kompleks işlemler yapmaya başladıkça komut satırını üç kademeli bir yapıya geçirdi. Bu nedenle hemen hemen her Command kendi Management komutuna sahip oldu. Bu üç kademeli yapıyı da docker management-command command( docker conntainer run hello-world ) şeklinde yapılandırdı.

Kısacası Docker da hangi Management Command ile işlem yapmak istiyorsak önce onu yazıyoruz ardından Command komutunu yazıyoruz. Bu kısımda bütün komutları ezberlememize tabi ki olanak yok. Ezberlemeye çalışmak yerine --help yardım komutunu kullanmak bizim için daha faydalı olacaktır. Mesela "image" lerle ilgili bir işlem yapmak istiyoruz, terminal satırına docker image --help komutunu yazalım.

docker image --help




Ekran çıktısından da gördüğünüz gibi image Management Commands'ı ile yapabileceğimiz komutlar karşımıza çıkıyor. Örnek olarak bir tane image silmek istiyorsak. Commands lara baktığımızda silme komutunun "rm" olduğunu görüyoruz. Peki "docker image rm" komutunu nasıl kullancağız?
Komut satırına "docker image rm --help" yazarsak image içinde "rm" i nasıl kullanabileceğimizi bize gösterecektir.




En üstte gördüğümüz gibi docker image rm [OPTIONS] IMAGE [IMAGE...] yapısıyla image management-commands' ını kullanabiliyoruz.
Örnek olarak:

docker image rm -f hello-world

Docker Container:
Bir docker container'ı nasıl oluşturacağımızı komut satırına "--help" fonksiyonu ile öğrenelim.

docker container --help




Ekran çıktısını incelediğimizde "create" komutu bir container oluşturmamızı, "start" komutu ise o container'ı başlatmamızı sağlıyor.
Her defasında önce container'ı oluşturup sonra start ile çalıştırmak yerine "run" komutunu da kullanabiliriz. Bu komut (run) yukarıda da açıklandığı gibi container yoksa önce oluşturuyor sonra da çalıştırıyor.

Peki docker container run komutunu nasıl kullanacağız?

docker container run --help

Bu komutu yazdığınızda karşınıza uzunca bir liste çıkacaktır. Bu listeyi inceleyip farklı komutlar kullanabilirsiniz. Ben örnek olması amacıyla "run" komutunu inceleyeceğim.

Ekran çıktısında önemli olan kısım Usage kısmıdır. Docker, Usage kısmında bu komutu nasıl kullanacağımızı  bize söylüyor.                                                                                                                                                                                                                   
"Usage:  docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]"

docker container run daha sonra girmek istediğim bir "OPSIONS" varsa bunu yazıyorum sonra hangi "IMAGE" den bir container yaratmak istiyorsam o image'nin adını giriyorum en son olarak ta bu image içinde farklı bir komut çalıştırmak istiyorsam o komutları giriyorum. Hadi deneyelim:

docker container run --name ilkcontainer emrahakin/ilkcontainer
Komut satırına aşağıda ki komutu yazdığımızda ilkcontainer adında emrahakin/ilkcontainer image sinden bir container oluşturacağız.
docker container run --name ilkcontainer emrahakin/ilkcontainer 




Görüldüğü gibi docker run komutundan sonra emrahakin/ilkcontainer image si bizde olmadığı için önce docker hub dan bu image yi çekti ve ardından bu image den ilkcontainer isminde bir container oluşturdu ve container içerisinde ki uygulamayı çalıştırdı "Merhaba İlk Container Başarıyla Oluşturuldu" yazısını yazdı ve container kapatıldı.

https://github.com/emrakin/DockerLearningRepo/tree/main/CreateDockerImage/CreateDockerImage  dilerseniz bu linkte ki Dockerfile dosyasını ve ilkcontainer olarak indirdiğimiz .NET Console Uygulamasını inceleyebilirsiniz.

docker container ls -a
Komut satırına docker container ls -a yazarsak sistemimizde oluşturulmuş bütün container ları görebiliriz. (-a yazmazsak sadece çalışan container ları görebiliriz.)

ilkcontainer isimli container a baktığınız da "STATUS" kısmında Exited (yani kapatılmış) yazdığını göreceksiniz. Kapatılmasının sebebini şöyle açıklayabiliriz.
Bir docker imajından container oluşturduğumuz zaman içinde  varsayılan olarak çalışması için bir uygulama vardır. Bu uygulama çalıştığı sürece container ayakta kalır. Uygulama çalışmayı bıraktığı zaman container da kapanır. Bizim docker imajımızda yer alan uygulama da ekrana "Merhaba İlk Container Başarıyla Oluşturuldu" yazısını yazdıktan sonra kapandığı için ilkcontainer adında oluşturduğumuz container da Exited olmuş durumda. Yukarıda da bahsettiğim gibi ben burada bir .NET Console App uygulaması yaptım Dockerfile ve uygulamaya https://github.com/emrakin/DockerLearningRepo/tree/main/CreateDockerImage/CreateDockerImage bu linkten ulaşabilir ve inceleyebilirsiniz.

Bir sonra ki anlatımda container yapısına devam edeceğim ve bir web uygulamasının docker içinde nasıl çalıştırıldığından bahsedeceğim.

Benzer Yazılar

0 yorum:

Yorum Gönder