Docker komutları serimizin 3.yazısında devam ediyoruz: ilk olarak çalışan bir container nasıl durdurulur? bunu paunse komutuyla yapabiliriz.
Öncelikle (eğer mevcutta çalışmıyorsa) bir container ayağa kaldıralım, örneğin nodejs uygulaması kaldıralım:
docker run -p 5000:5000 ozanzarci/hello-world-nodejs:0.1
Bu imajı daha önce indirmemişseniz ortalama 20 saniyede indirip container ayağa kalkacaktır, ardından docker container ls komutuyla aktif olan containerları listelediğinizde az önce ayağa kaldırdığımız nodejs uygulamasının çalıştığını göreceksiniz, hatta localhost:5000 adreine gittiğinizde sayfaya ulaşacaksınız, şimdi bu container’ı duraklatalım: bunun için bize CONTAINER ID değeri lazım olacak, kodumuz aşağıdaki gibi olacak:
docker container pause 45332db9eb38
Komutu girdiğinizde, durdurduğunuz container STATUS alanında (paused) ibaresi göreceksiniz:
Duraklattığınız containerin portuna gittiğinizde size response (cevap) vermediğini göreceksiniz, çünkü hizmeti duraklattık.
Peki bu containerı tekrar nasıl aktif hale getireceğiz? unpause komutuyla yapacağız:
docker container unpause 45332db9eb38
Komutu girdiğinizde container direkt aktif hale gelecek, docker container ls komutunu girdiğinizde STATUS durumundaki (paused) ibaresi kalkacak, şimdi localhost:5000 adresine gittiğinizde sayfanın da çalıştığını göreceksiniz.
Bir containerı tamamen durdurmak için stop komutunu kullanacağız, yine aynı containerı örnek alalım ve onu durdurmak istediğimizi varsayalım:
docker container stop 45332db9eb38
Komutu girdiğinizde birkaç saniye sürecek ve container stop olduğunda terminal tekrar hazır hale gelecektir.
localhost:5000 adresinin artık çalışmadığını ve docker container ls komutunu girdiğinizde ayakta bir container olmadığını göreceksiniz.
Komutlara devam edelim, şimdi bir container daha ayağa kaldıralım; öncelikle bir container ayağa kaldırmalıyız, bu sefer python imajını run edelim:
docker run -p 5000:5000 ozanzarci/hello-world-python:1.0
Bu komut satırıyla Python çalıştıran bir container ayağa kaldırdık.
Şimdi bir containerı direkt yok etmek istediğimizi varsayalım, bunun için kill komutunu kullanacağız:
docker container kill 1f3810e650c0
Komut sonrasında, ayağa kaldırdığımız Python containerı direk kill olmuş oldu.
Peki kill ile stop komutları arasındaki fark nedir?
Stop komutunda bir container tamamen düzgün şekilde sonlandırılır, log kayıtları doğru şekilde yazılır, history kayıtları düzgün şekilde tutulur, tüm bağlantıları olması gerektiği gibi kapatılır.
Kill komutunda bu tür işlemlerin yapılması beklenmeden container direkt öldürülür, komutla beraber tüm log kayıtları, history vb. gibi bilgileri kesilir, genelde tavsiye edilmez.
Bir zaman sonra bilgisayarınızda çalışmayan container kapsayıcıları çöplüğüne döner, örneğin şimdiye kadar başlatılmış durdurumuş tüm containerları listeleyelim:
docker container ls -a
Komut sonrasında bir çok container göreceksiniz, bu listeyi temizlemek isteyebilirsiniz, bunun için prune komutunu kullanacağız, bu komut tüm stop edilen container’ları temizler:
docker container prune
Komutu girdiğinizde size “emin misiniz?” diye soracak, “y” yazıp enter tuşuna basacağız:
Bu komutla ben yaklaşık 1mn yer açmış oldum, bir şirkette bu yüksek boyut tasarruflarına ulaşacaktır.