Docker <none> TAG görüntülerini kaldır


142
root@server:~# docker images -a        
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>                  <none>              5e2dfc857e73        5 days ago          261.6 MB
<none>                  <none>              d053e988f23d        5 days ago          261.6 MB
<none>                  <none>              1d5d4a2d89eb        5 days ago          261.6 MB
<none>                  <none>              ea0d189fdb19        5 days ago          100.5 MB
<none>                  <none>              26c6175962b3        5 days ago          100.5 MB
<none>                  <none>              73d5cec4a0b3        5 days ago          100.5 MB
<none>                  <none>              e19590e1bac1        5 days ago          100.5 MB

Aşağıdakileri denedim:

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

Ve aşağıdakiler:

docker rmi $(docker images -f "dangling=true" -q)

Aşağıdaki hatayı alın:

docker: "rmi" requires a minimum of 1 argument.
See 'docker rmi --help'.

Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images

Biraz geç ama bu yorumu diğer kullanıcılar için eklemem gerekiyor. Windows Komut İstemi kullanıyorsanız, bu işe yaramaz. Çünkü Komut İstemi iç işlevleri desteklemiyor. Windows PowerShell ile kesin hatları deneyin
er-han

1
docker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
Ondra Žižka

docker rmi $(docker images | grep "<none>" | awk "{print $3}")
David

5
docker rmi $(docker images -f dangling=true -q)
Jinna Balu

@Karl Morrison: Neredeyse oradaydınız: sadece cevapsız-bir (--all) docker images:)
mirekphd

Yanıtlar:


205

Yalnızca etiketsiz resimleri deneyebilir ve listeleyebilirsiniz (etiketi olmayan veya etiketi olmayanlar):

docker images -q -a | xargs docker inspect --format='{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}'|grep -v ':'

Ancak, bu etiketsiz görüntülerden bazılarına başkaları ihtiyaç duyabilir.

Yalnızca sarkan resimleri kaldırmayı tercih ederim :

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

Eylül 2016'da docker 1.13+ için " Eski ve kullanılmayan Docker görüntüleri nasıl kaldırılır " bölümünde bahsettiğim gibi , şu image prunekomutu da yapabilirsiniz :

docker image prune

Bu varlık dedi Janaka Bandara bahseder yorumlarda :

Bu did not kaldırmak <none>bana (örn için etiketli görüntüleri foo/bar:<none>); Kullanmak zorundaydım docker images --digestsvedocker rmi foo/bar@<digest>

Janaka , Paul V. Novarese'den " Etiketle İmzalanmış Bir Görüntü Nasıl Kaldırılır " konusuna atıfta bulunur :

# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
pvnovarese/mprime        latest              459769dbc7a1        5 days ago          4.461 MB
pvnovarese/mprime        <none>              459769dbc7a1        5 days ago          4.461 MB

Teşhis Adımları

--digests=trueSeçeneği kullanırsanız bu iki girişteki farkı görebilirsiniz (etiketlenmemiş giriş, Docker Content Trust imza özetine sahiptir):

# docker images --digests=true
REPOSITORY               TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
pvnovarese/mprime        latest              <none>                                                                    459769dbc7a1        5 days ago          4.461 MB
pvnovarese/mprime        <none>              sha256:0b315a681a6b9f14f93ab34f3c744fd547bda30a03b55263d93861671fa33b00   459769dbc7a1        5 days ago     

Pavlus'un ayrıca 18892 moby sorunundan bahsettiğine dikkat edin :

İmzalı bir görüntüyü çektikten sonra <none>, " docker images" çıktısında "ekstra" bir giriş (etiketli ) var .
Bu rmi, görüntüyü zorlaştırır (onu zorlamanız veya önce uygun şekilde etiketlenmiş girişi silmeniz veya özetle silmeniz gerekir.


6
Bu <none>benim için etiketlenmiş resimleri kaldırmadı (örn. foo/bar:<none>); docker images --digestsdocker rmi foo/bar@<digest>
Kullanmak

1
@JanakaBandara Teşekkürler.
Yorumunuzu

benim içinsudo docker rmi $(docker images --filter "dangling=true" -q --no-trunc) Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.35/images/json?filters=%7B%22dangling%22%3A%7B%22true%22%3Atrue%7D%7D: dial unix /var/run/docker.sock: connect: permission denied "docker rmi" requires at least 1 argument. See 'docker rmi --help'. Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] [flags] Remove one or more images
Jamie Hutber

@JamieHutber "docker rmi" en az 1 bağımsız değişken gerektirir. Bu, docker images --filter "dangling = true" -q --no-trunc hiçbir şey döndürmez, yani sarkan imajlar yok mu?
VonC

Teşekkürler VonC aslında öyle değilhutber@hutber-blade /var/www/dockerfile-wizard $ sudo docker images --filter "dangling=true" -q --no-trunc sha256:c58f4e4b10b1f862d78f96e90bdf13ffe37993279d0992be46d5c15dad51421e sha256:db28e821bc3f337caf711a664bc529be5db8894dd73c5b013ad814cc1e9fc21b sha256:257936750a7d43ae77c713c2cb18342be935de7d3b8fad23d6664fc64acfe753 sha256:6b815cefeb527885b2b9dd831f7f40b05942f00d1367274833a6274154d8ce43
Jamie Hutber

43
docker images | grep none | awk '{ print $3; }' | xargs docker rmi

Bunu basitçe deneyebilirsin


1
Benim için en hızlı ve en kolay çözüm
Mark

--forceSonunda eklemek zorunda. Yani komut şöyle görünecek- docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force
Munim Dibosh

23

docker image prune, sarkan tüm imajları kaldırır (etiketli olmayanlar). docker image prune -a, onları kullanan konteyner içermeyen tüm imajları da kaldırır.

Sarkan ve kullanılmayan görüntüler arasındaki fark, bu yığın aşımı dizisinde açıklanmıştır .


6

Gidebilirsin docker rmi $(docker images -f "dangling=true" -q). Daha fazla seçenek için resim belgelerine bakın .

$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
<none>                      <none>              94870cda569b        4 seconds ago       673MB
python                      2.7                 320a06f42b5f        10 days ago         673MB
mysql                       latest              e799c7f9ae9c        2 months ago        407MB
gcavalcante8808/semaphore   latest              86e863e11461        2 months ago        537MB
redis                       latest              e32ef7250bc1        2 months ago        184MB
rabbitmq                    3.6.9-management    7e69e14cc496        2 months ago        179MB
rabbitmq                    3.6.9               eb2e4968538a        2 months ago        179MB
jordan/rundeck              latest              6d40b57b1572        2 months ago        660MB
rabbitmq                    3.5.6-management    dbfe8d18809a        19 months ago       304MB

$ docker rmi $(docker images --format '{{.ID}}' --filter=dangling=true)
Deleted: sha256:94870cda569b8cf5f42be25af107d464c993b4502a1472c1679bf2d213b6c0a6

5

Docker belgelerine göre, yalnızca etiketsiz (sarkan) görüntüleri listeleyebilirsiniz.

$ docker images -f "dangling=true"

ve onları şu şekilde docker rmikomuta yönlendirin :

$ docker rmi $(docker images -f "dangling=true" -q) --force

-qYalnızca kapsayıcıların sayısal kimliklerini gösteren parametrelere dikkat edin .


1
Ben teklif ne benzer değil mi benim cevap 2015 yılında?
VonC

5

Olmadığını kontrol edebilir 'sarkan' filtre artık çalışma olduğunu

$ docker images -f “dangling=true” -q
Error response from daemon: Invalid filter 'dangling'

Sarkan görüntüleri çıkarmak için docker system budama kullanın

$ docker system prune
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all dangling build cache
Are you sure you want to continue? [y/N]

--forceOnay istememek için kullanabilirsiniz

$ docker system prune --force

5

Sadece şu komutu çalıştırın:

docker image prune --filter="dangling=true"

4

docker image prune -fEn yararlı buldum ve bunu günlük işlerimde her zaman kullanıyorum, etiketini kullanmak -fonay gerektirmez. Daha fazla ayrıntı burada


3

noneAşağıdakileri kullanarak havuz adı olan görüntüleri kaldırın :

docker rmi $(docker images | grep "^<none" | awk '{print $3}')

noneEtiketi veya depo adı olan resimleri kaldırın :

docker rmi $(docker images | grep "none" | awk '{print $3}')


2

docker system prune hile yapacak, kaldıracak

- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache

Ama dikkatli kullanın!


2

Tüm resimleri kaldırmak noneiçin, çalıştırmayı kullanabilecekleri durdurulmuş tüm kapsayıcıları kaldırdığımızdan emin olmalıyız:

docker rm $(docker ps -a -q)

sonra tüm resimleri kaldırabiliriz:

docker image prune


1

Aşağıdaki komut benim için çalışıyor. bu sadece basit grep "" görüntüleridir ve docker görüntü kimliğini alır ve tüm görüntüleri kaldırır. Gerektiği gibi basit tek komut.

docker rmi $(docker images |grep "<none>"| awk '{print $3}')


1

Bu, tansadio'nun cevabının bir uzantısıdır:

Aşağıdaki hatayı alıyorsanız:

Error response from daemon: conflict: unable to delete <> (must be forced) - image is being used by stopped container <>

Şununla zorlayabilirsiniz --force:

docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force

1

Aşağıdaki tüm <none>resimleri kaldıracak

docker rmi $(docker images | grep none | awk '{print $3}')

Bunu yapmanızı önermiyorum docker rmi, docker rmi -fancak olarak değiştirerek kaldırmaya zorlayabilirsiniz .

<none>Resimlerden bazıları diğer resimlerle ilgili olabilir , bu nedenle güvenli olması için -fetiket kullanmayın .


1

% 100 çalışır: docker images | grep none | awk '{print $ 3}' | xargs docker rmi -f


0

Basit ve anlaşılır,

Bu basit ve net hatayı anlamam bile 3 günümü aldı.

Docker görüntüsü başarıyla oluşturulmadı

Step 7/13 : COPY jupyter_notebook_config.py /root/.jupyter/
 ---> bf29ce6fe6dc
Step 8/13 : COPY notebooks /notebooks
COPY failed: stat /var/lib/docker/tmp/docker-builder776981166/notebooks: no such file or directory
anarchist@anarchist-desktop:~/Documents/sam/dockerDem$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              bf29ce6fe6dc        9 seconds ago       1.27GB
ubuntu              16.04               a51debf7e1eb        3 weeks ago         116MB

Sonra Dockerfile'dan 8. satırı kaldırdım, bu sefer sinyal başarısı oldu.

Successfully built b6724370f8ca
Successfully tagged dem:expo
anarchist@anarchist-desktop:~/Documents/sam/dockerDem$ docker run -it -p 8888:8888 dem:expo
[I 06:11:38.984 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 06:11:39.011 NotebookApp] Serving notebooks from local directory: /
[I 06:11:39.011 NotebookApp] The Jupyter Notebook is running at:
[I 06:11:39.011 NotebookApp] http://(296d81166725 or 127.0.0.1):8888/?token=496feb282ef749c05277ef57a51e8a56fedb1c6b337b9f92

Başarıyla etiketlendi dem: expo yazıyor, bu satır docker işlemi sırasında imp.


0

docker rmi -f $ (docker görüntüleri -a | awk 'NR> 1 && $ 2 == "" {print $ 3}')


0

Herşey

Windows severler için PowerShell komutunu paylaşma (bash, grep veya awk komutunun olmaması durumunda)

(docker images) -like '*<none>*' | ForEach-Object { 
  $imageid=($_ -split "\s+")[2]
  docker rmi -f $imageid
}


0

Çıkış yapılan tüm kapları çıkarın

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

veya kalıba göre kapları çıkarın

docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

0

etiketi içeren docker görüntülerini listelemek için bunu deneyin <none>

docker images -a | awk '/^<none>/ {print $3}'

ve sonra tüm görüntüyü etiketi ile silebilirsiniz <none>. bu benim için çalıştı.

docker rmi $(docker images -a | awk '/^<none>/ {print $3}')


-1

Görüntüleri kimliklerini kullanarak kaldırın:

# docker rmi 5e2dfc857e73 d053e988f23d ...

-2

Sarkan görüntüler önceki derlemelerden ve çekmelerden gelen hayaletlerdir, bunları basitçe silin: docker rmi $ (docker images -f "sarkan = true" -q)


OP, bu tam komutu zaten denediğini ancak başarısız olduğunu belirtir. Ayrıca, bu cevap şimdiden en az iki kez verilmiştir.
CaringDev

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

Kullanımda olan aşağıdaki görseller belirtilmiştir. Bu komutun istenmeyen görüntülerden kurtulduğunu düşünüyorum.


2
bu tüm resimleri kaldırmaz mı?
marianobianchi

3
bu, kullanılmayan tüm resimleri kaldırır ve doğru yanıt olarak işaretlenmemelidir.
Ghashange
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.