Eski Docker kapsayıcıları nasıl kaldırılır

Bu soru https://stackoverflow.com/questions/17014263/should-i-be-concerned-about-excess-non-running-docker-containers ile ilgilidir.

Eski konteynerleri nasıl çıkaracağımı merak ediyorum. Docker rm 3e552code34atek bir tanesini kaldırmanıza izin veriyor, ancak bende zaten çok var. docker rm --help bir seçim seçeneği sunmuyor (hepsi veya resim adına göre gibi).

Belki de bu konteynerlerin depolandığı ve bunları manuel olarak kolayca silebileceğim bir dizin vardır?

Çözüm

Docker 1.13.x]1'den beri Docker container prune'yi kullanabilirsiniz:

docker container prune

Bu, durdurulan tüm konteynerleri kaldıracaktır ve tüm platformlarda aynı şekilde çalışmalıdır.

Ayrıca bir Docker system prune vardır:

docker system prune

Bu, kullanılmayan tüm kapsayıcıları, ağları, görüntüleri (hem sarkan hem de referanssız) ve isteğe bağlı olarak birimleri tek bir komutla temizleyecektir.


Daha eski Docker sürümlerinde, ihtiyacınız olanı elde etmek için Docker komutlarını diğer Unix komutlarıyla birlikte dizebilirsiniz. İşte haftalar öncesine ait eski konteynerlerin nasıl temizleneceğine dair bir örnek:

$ docker ps --filter "status=exited" | grep 'weeks ago' | awk '{print $1}' | xargs --no-run-if-empty docker rm

Hakkını teslim etmek gerekirse, bu örnek https://twitter.com/jpetazzo/status/347431091415703552 adresinden alınmıştır.

Yorumlar (21)

Guillaume J. Charmes'den aldığım bir başka yöntem (hakkını teslim etmek gerekir):

docker rm `docker ps --no-trunc -aq`

tüm konteynerleri zarif bir şekilde kaldıracaktır.

Ve Bartosz Bilicki tarafından, Windows için:

FOR /f "tokens=*" %i IN ('docker ps -a -q') DO docker rm %i

PowerShell için:

docker rm @(docker ps -aq)

Docker 1.13 (Q4 2016) ile bir güncelleme, VonC (bu başlıkta daha sonra):

docker system prune kullanılmayan TÜM verileri silecektir (yani, sırayla: durdurulan kapsayıcılar, kapsayıcı içermeyen birimler ve kapsayıcı içermeyen görüntüler).

Bakınız PR 26108 ve commit 86de7c0, Docker daemon verilerinin diskte ne kadar yer kapladığını görselleştirmeyi kolaylaştırmak ve "gereksiz" fazlalıkları kolayca temizlemeye izin vermek için birkaç yeni komut sunuyor.

docker system prune

WARNING! This will remove:
    - all stopped containers
    - all volumes not used by at least one container
    - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y
Yorumlar (20)

İlk olarak, kaldırmaya çalışmadan önce çalışan konteynerleri durdurun

Çalışan konteynerleri kaldırın

docker rm $(docker stop -t=1 $(docker ps -q))

Durduryerineöldürkullanabilirsiniz. Benim durumumdastop`u tercih ediyorum çünkü her seferinde yeni bir tane oluşturmak yerine onları yeniden çalıştırma eğilimindeyim, bu yüzden onları güzelce kapatmaya çalışıyorum.

Not: Bir konteyneri durdurmaya çalışmak size hata verecektir:

Hata: Çalışan bir konteyneri kaldırmak imkansız, lütfen önce durdurun

Tüm konteynerleri kaldırın

docker rm $(docker ps -a -q)
Yorumlar (0)