Tüm Docker yerel Docker görüntüleri nasıl silinir


270

Geçenlerde ben kullanması gerektiğini fark asla Docker kullanmaya başladı ve docker-compose downyerine ctrl-cya docker-compose stopDeneylerim kurtulmak için. Artık yerel olarak çok sayıda gereksiz docker resmim var.

Tüm yerel liman işçisi resimlerini ve kapsayıcılarını silmek için çalıştırabileceğim bir bayrak var mı?

docker rmi --all --force-Tüm bayrak yok gibi bir şey var ama benzer bir fikre sahip bir şey arıyorum.



2
docker images purge-> tüm liman
işçiliği

docker image ls -q | xargs -I {} docker image rm -f {}
Xargs

@muthukumarhelius Bence demek istiyorsun docker image prune(görüntü tekil ve tasfiye yerine kuru erik).
Andrés Mejía

Yanıtlar:


539

Birimleri dahil tüm kapsayıcıları silmek için,

docker rm -vf $(docker ps -a -q)

Tüm resimleri silmek için,

docker rmi -f $(docker images -a -q)

Unutmayın, bu kapların oluşturulduğu tüm görüntüleri kaldırmadan önce tüm kapları kaldırmalısınız.

Windows (Powershell) üzerinde çalışıyorsanız,

$images = docker images -a -q
foreach ($image in $images) { docker image rm $image -f }

7
unknown shorthand flag: 'a' in -akoşarkendocker rmi -f $(docker images -a -q)
Ashutosh Chamoli

25
@Ashutosh Chamoli: CMD'de çalışmaz, PowerShell'de çalışır.
Jack

4
docker images -a -q | % { docker image rm $_ -f }
Powershell

4
Buraya 100 kere gelmeliydim. Bu cevabı yazdığınız için teşekkürler!
Ajay Maity

「Docker rmi -f $ (docker görüntüleri -a -q)」 gerçek badass
Sinux

177

Her şeyi silmek için bunu kullanın :

docker system prune -a --volumes

Kullanılmayan tüm kapları, birimleri, ağları ve resimleri kaldırın

WARNING! This will remove:
    - all stopped containers
    - all networks not used by at least one container
    - all volumes not used by at least one container
    - all images without at least one container associated to them
    - all build cache

https://docs.docker.com/engine/reference/commandline/system_prune/#extended-description


1
Ancak, tüm disk alanını geri kazanmaz.
lucian303

@ lucian303 Bu yaklaşım disk alanını geri kazanır. Belki belirli bir sorunla karşı karşıyasınızdır.
Robert

Sadece bunu yaptığımda ve @techtabu'nun cevabındaki adımlarda istenen sonucu alıyor gibi görünüyorum
sir_dancealot

33

Her şeyi basitçe temizlemek için:

$ docker system prune --all

Her şey şu anlama gelir:

  • durdurulan tüm konteynerler
  • en az bir kapsayıcı tarafından kullanılmayan tüm ağlar
  • bunlarla ilişkili en az bir kapsayıcı içermeyen tüm resimler
  • hepsi önbellek oluştur

26

docker image prune -a

Sadece sarkan görüntüleri değil, kullanılmayan tüm görüntüleri kaldırın. Zorlamak için -fseçenek ekleyin .

Yerel liman işçisi sürümü: 17.09.0-ce, Git taahhüdü: afdb6d4, OS / Arch: darwin / amd64

$ docker image prune -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker image prune [OPTIONS]

Remove unused images

Options:
  -a, --all             Remove all unused images, not just dangling ones
      --filter filter   Provide filter values (e.g. 'until=<timestamp>')
  -f, --force           Do not prompt for confirmation
      --help            Print usage

7

Kolay ve kullanışlı komutlar

Tüm resimleri silmek için

docker rmi $(docker images -a)

Çıkış durumunda olan kapsayıcıları silmek için

docker rm $(docker ps -a -f status=exited -q)

Oluşturulmuş durumdaki kapsayıcıları silmek için

docker rm $(docker ps -a -f status=created -q)

NOT: Tüm kapları çıkarın ve ardından görüntüleri çıkarın


tüm resimleri silmek için - "docker rmi $ (docker görüntüleri -a -q)" olmalıdır. -q sadece resim kimliklerini döndürür
Jimmy MG Lim

yani bu görüntüleri silmiş. Bir kez daha tekrar kontrol edin
Deep Nirmal

3

Tüm resimleri silmek için:

docker rmi -f $(docker images -a | awk {'print $3'})

Açıklama:

liman işçisi resimleri -a | awk {'3 ABD doları yazdır'}

Bu komut tüm resim kimliklerini döndürür ve ardından kimliği kullanarak resmi silmek için kullanılır.


3

Bağlantı istasyonunu çağırmadan sil :

rm -rf /var/lib/docker

Docker'ı normal şekilde çalıştırabiliyorsanız bu önerilmez, ancak herhangi bir nedenden ötürü yapamıyorsanız veya istemiyorsanız, bu işe yarayacaktır.


2

Bu şekilde deneyebilirsiniz:

docker system prune

Benim durumumda bu hala kullandığım bir birimi kaldıracaktır. Ne yaptığını bilmiyorsanız bunu kullanmayın
Zach Smith

2

Tüm resimleri silmek için:

docker rmi $(docker images -a -q)

burada -a hepsi ve -q yalnızca resim kimlikleri döndürür

Kullanılmayan görüntüleri ve kapsayıcıları kaldırmak için:

docker system prune

docker sürüsü kullanıyormuşsunuz gibi dikkat edin ve yerel makineniz uzaktan sürüme katılıyor (yönetici / işçi olarak), yereliniz dağıtılmış repo olacak. böylece, dağıtılan görüntüler kaldırılır.


2
docker rmi $(docker images -q) --force

2
Bir gönderiye yanıt bırakırken biraz açıklama eklemelisiniz, böylece daha sonra bulan diğer kişilerin anlayabilmesi için.
Morphyish

1

Techtabu'nun kabul edilen cevabına ekleme, Windows'ta docker kullanıyorsanız, aşağıdaki komutu kullanabilirsiniz

for /F "delims=" %A in ('docker ps -a -q') do docker rm %A

burada, komut docker ps -a -qtüm görüntüleri listeler ve bu liste docker rmtek tek geçirilir

bkz bu komut biçimi bu tip cmd pencerelerde nasıl çalıştığı hakkında daha fazla ayrıntı için.


1

İle başka bir yol xargs

docker image ls -q | xargs -I {} docker image rm -f {}

0

Tüm Docker yerel Docker görüntülerini silmek için 2 adımı izleyin:

1. adım: liman işçisi resimleri (tüm liman işçisi resimlerini kimliğiyle listeleyin)

     example :
     REPOSITORY    TAG    IMAGE ID            CREATED             SIZE
     pradip564/my  latest 31e522c6cfe4        3 months ago        915MB

2. adım: rıhtım resmi rm 31e522c6cfe4 (GÖRÜNTÜ Kimliği)

      OUTPUT : image deleted
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.