Docker Container’ı Detach modda çalıştırmak

Uygulamanızı yazarken eğer thread’ler ile biraz derin bir ilişki kurmuşsanız daemon kavramıyla karşılaşmış olabilirsiniz. Kısaca, “arka tarafa git ve sessiz sedasız çalışmaya devam et” demek diyebiliriz. Ayrıntılı bilgi için -> Google :)

Aynı mantık ile container‘ımızın arka planda sesiz sedasız çalışmasını isteyebiliriz. Örneğin web sitemizi bir container’a kurduk, yerleştirdik ve belli bir port üzerinden dışarıya açtık. Ve artık bu container kapanmadan sürekli çalışması gerekiyor ki web sitemize erişebilelim. Bunun için container‘ımızın arka planda sürekli çalışır modda yani detach modda çalışması gerekmektedir. Aşağıdaki komut satırı ile bunu gerçekleştirebiliriz.

docker run -d --name my-nginx-container nginx

-d parametresi ile container‘ımızın detach modda çalışmasını sağlıyoruz. docker ps -a komutu ile container‘ımızın çalıştığını görebiliriz.

Detach modda çalıştırılan bir Container’ı tekrar önyüze getirmek

docker attach my-nginx-container

Yukarıda ki komut satırı ile arka planda çalışan container‘ımızı tekrar önyüze getirebiliriz.


Docker Image

Makinemizde yüklü docker image’larını listelemek istersek

docker image list

komutunu kullanabiliriz.

Eğer makinemizden bir image‘ı kaldırmak istersek

docker rmi imageId veya name

komutunu kullanabiliriz.

Eğer silmek istediğimiz image‘ı daha önce çalışıp duran veya hala çalışıyor durumunda olan bir container var ise şu şekilde bir hata mesajı fırlatılır.

Eğer ne olursa olsun sil demek istersek -f parametresini eklememiz yeterli olacaktır. Yani;

docker rmi -f imageId veya name

Container –restart=always

Eğer ayağa kaldırdığımız bir container‘ın ölmesi durumunda otomatik olarak tekrar koşmasını istersek run komutuna --restart=always parametresini verebiliriz.

docker run -d --restart=always --name=web nginx

Docker exec komutu

Eğer çalışan bir container‘ın içerisinde bir komut çalıştırmak istersek exec komutunu kullanabiliriz.

Örneğin nginx image’ini kullanarak bir container ayağa kaldırdık.

docker run -d --name=web nginx

Ve bu container‘ın içine girerek date komutunu çalıştırmak istiyoruz. Ya da container‘ın içindeki bash’e erişmek istiyoruz. Bunun için;

# docker exec -i -t continerId & name command

docker exec -i -t web date

docker exec -i -t web bash

komutlarını kullanabiliriz.


Kaynaklar