Ana sayfa » Docker İmaj ve Container Komutlarına Giriş (2/4) | pull, search, history, inspect, remove, forced

Docker İmaj ve Container Komutlarına Giriş (2/4) | pull, search, history, inspect, remove, forced

by ozarci
docker imaj ve container komutları 2

Docker imajları komutlarını incelemeye devam ediyoruz; daha önceki yazımızda “ls , -a , stop” komutlarını görmüştük, şimdi tekrar docker images komutuyla bilgisayarımızdaki imajları listeleyelim:

Bilgisayarımızdaki imajları listeledik

Daha önce docker run komutuyla imaj indirip container ayağa kaldırmıştık, eğer doğrulanmış bir dağıtıcının sağladığı imaj indirmek isterseniz pull komutunu kullanarak bunu yapabilirsiniz, örneğin bilgisayarımıza mysql veritabanı indirmek istiyoruz, komutu nasıl kullanıyoruz:

docker pull mysql

Komutu girdiğinizde imajın son update versiyonunu indirecektir, genellikle “latest” adıyla etiketlenir, imajın boyutu kaynaklı indirmesi biraz zaman alacaktır, internet hızına bağlı olarak 2-3 dakikada tamamlanmış olmlası beklenir.
İndirme tamamlandığında aşağıdaki gibi bir ekran çıktısı olacak:

şimdi terminale cls komutu yazarak ekranı temizleyelim, ardından docker images komutuyla imajlarımızı listeleyelim:

Gördüğünüz gibi artık mysql adında bir imajımız daha var. Şuan sadece imajı indirdik bir container ayağa kaldırmadık, docker container ls komutuyla kontrol ettiğinizde mysql imajının bir container’da çalışmadığını teyid edeceksiniz, çünkü pull komutu sadece imajı çeker.
Peki aradığınız docker imajının sağlayıcısını tanımıyorsunuz lakin indirmeniz gerekiyor, nasıl arama yapacaksınız? Bunu search komutuyla yapacağız, docker havuzunda arayacağız:

docker search mysql

Komutu yazdığınuzda mysql adında birçok hazır imaj göreceksiniz:

Burada önemli olan Offical [OK] olan dağıtıcıları tercih etmeniz, hem bu doğru süreç hem de güvenlik gereği Offical imajı indirmeniz faydanıza olacaktır. Örneğin Tomcat, Java gibi uygulama yazılımları indirmeniz gerekiyor ama nereden indireceğinizi bilmiyorsunuz, böyle durumlarda search komutunu kullanabilirsiniz.

İmajlar katmanlardan oluşur, yani son aşamaya gelene kadar üzerinde yapılan her işlem bir history olarak saklanır, bunu görmek için yine history komutunu kullanabiliriz.
Şimdi terminali temizleyelim, ardından imajları tekrar listeleyin, history komutunu kullanacağız, bunun için ben Python imajını seçtim:

docker image history ozanzarci/hello-world-python:0.1

Komutu girdikten sonra, terminalde Python imajının katmanlarını göreceğiz, burada imaj için atanan expose (port) değerine kadar önemli verileri görebiliriz:

Bir imajı daha detaylı incelemek isterseniz bunun için kullanacağınız komut inspect olacaktır, şimdi tekrar terminali temizleyip ardından imajları listeleyelim.
Python imajının katmanlarına bakmıştık, şimdi de bu imajın tüm detaylarına bakalım, bunun için IMAGE ID’sini kullanacağız, aşağıdaki komut satırını terminale yazalım (bende görünen id’yi yazdım, siz kendi imaj id’nizi yazacaksınız):

docker image inspect 0d39d54e8c9a

Komut satırını girdiğinizde, o imajın zaman damgasını, bağlantı noktasını, uygulamanın nasıl başlatıldığını, bu imajı oluşturmak için docker’ın hangi sürümünün kullanıldığı, hangi işletim sisteminde hazırlandığı gibi detaylı bilgileri görebileceksiniz.

Şimdi yeni bir komutu inceleyelim: remove
Öncelikle tekrar terminali temizleyelim, ardından imajlarımızı listeyelim, daha önce indirdiğimiz mysql imajını bilgisayarımızdan kaldırmak istediğimizi varsayalım, bunu yapmak için öncelikle mysql imajının IMAGE ID değerine ihtiyacımız olacak (bende görünen id’yi yazdım, siz kendi imaj id’nizi yazacaksınız):

docker image remove e646c6533b0b

Mysql imajını bilgisayarımızdan kaldırdık: sırasıyla önce docker image remove satırımızı yazdık, son değer olarak mysql imajının id’sini girdik, imaj kaldırıldı, imajları tekrar listelediğimizde mysql imajının bilgisayarımızda artık olmadığını göreceğiz:

Püf noktası: remove komutunun kısa yolu “rm” kısaltmasıdır.

Bu konuda dikkat edilmesi gereken bir senaryo var, örneğin diğer imajları kaldırmak istediğimizde hata alacağız ve sistemden bu komutla direkt kaldıramayacağız, bunun sebebi: bir imajı sistemden kaldırabilmek için o imajın bir container’la ilişiği olmamalı, yani daha önce run edilmemiş olmalı, bir container içinde ayağa kalkmamış olmalı.
Hemen deneyelim ve hatayı alalım, sonrasında çözümüne bakacağız, java imajını kaldırmak istediğimizi varsayalım:

docker image rm 100229ba687e

Gördüğünüz gibi yukarıda rm komutuyla java imajını kaldırmaya çalıştığımızda, docker bize “bu bir containerla ilişkilidir, eminden forced şeklinde kaldırabilirsin” şeklinde bir mesaj verir, forced komutunun üzerinden ileride geçeceğiz.
Şimdi bizim yapmamız gereken önce ilişikli olduğu container’ı kaldırmak, bunun için ContainerID değerini kullanacağız, komutumuzu da container olarak değiştireceğiz:

docker container rm 2c94b85b5ce5

Komutu girip enter’a bastığınızda, container silindiği zaman terminal hazır hale gelecek, şimdi tekrar java imajını silmeyi denediğinizde (eğer başka ilişkili container tyoksa) sorunsuz komutun çalıştığını göreceksiniz.
İmaj her run edildiğinde benzersiz id’ye sahip başka bir container ayağa kalkar, yani remove işlemini birden çok sayıda container için yapmanız gerekebilir.

docker image rm 100229ba687e

Onlarca container ilişkili olabilir, bunları bu şekilde silmeye çalışmak büyük iş yükü olacağı için “eğer imajı kaldırmaya eminseniz” forced komutunu beraberinde kullanabiirsiniz, bu komut ilişkili container olsun olmasın imajı tamamen kaldıracktır:

docker image rm 100229ba687e -f

Ardından imajları listelediğinizde java imajının artık olmadığını göreceksiniz:

*Bir continer remove etmek için o container’ın run statüsünde olmaması gerekir, kaldırmak istiyorsak önce stop komutuyla durdurmalı, ardından aynı şekilde docker container rm “container id” yazarak kaldırabiliriz.

İlgini Çekebilir

0 0 votes
Article Rating
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x