डॉकर हटाएं <कोई नहीं> टैग छवियां


139
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

मैंने निम्नलिखित कोशिश की है:

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

और निम्नलिखित:

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

निम्नलिखित त्रुटि प्राप्त करें:

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

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

Remove one or more images

थोड़ी देर हो चुकी है लेकिन मुझे अन्य उपयोगकर्ताओं के लिए यह टिप्पणी जोड़नी होगी। यदि आप Windows कमांड प्रॉम्प्ट का उपयोग करते हैं, तो यह काम नहीं करेगा। क्योंकि कमांड प्रॉम्प्ट आंतरिक कार्यों का समर्थन नहीं करता है। विंडोज पॉवरशेल के साथ सटीक पंक्तियों को आज़माएं
एर-हान्ड

1
docker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
ओंद्रा kaižka

docker rmi $(docker images | grep "<none>" | awk "{print $3}")
डेविड

5
docker rmi $(docker images -f dangling=true -q)
जीना बालू Jin ’

@ कर्ल मॉरिसन: आप लगभग वहाँ थे: बस याद किया ( docker images
-all

जवाबों:


203

आप केवल अप्रकाशित चित्रों को सूचीबद्ध कर सकते हैं (बिना लेबल वाले, या बिना टैग वाले लेबल के साथ):

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

हालाँकि, उन अप्रकाशित छवियों में से कुछ की आवश्यकता दूसरों को हो सकती है।

मैं केवल झूलने वाली छवियां निकालना पसंद करता हूं :

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

जैसा कि मैंने 1.13+ के लिए सितंबर 2016 में " पुरानी और अप्रयुक्त डॉकटर छवियों को कैसे हटाएं " के लिए उल्लेख किया है , आप image pruneकमांड भी कर सकते हैं :

docker image prune

कहा जा रहा है कि, जनक बंदर टिप्पणी में उल्लेख करते हैं :

यह मेरे लिए -tagged छवियों को नहीं हटाया <none>(उदाहरण के लिए foo/bar:<none>); मुझे इस्तेमाल करना था docker images --digestsऔरdocker rmi foo/bar@<digest>

जनक ने पॉल वी। नोवेर्से से " टैग के साथ एक हस्ताक्षरित छवि को कैसे निकालें " का संदर्भ दिया :

# 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

डायग्नोस्टिक स्टेप्स

यदि आप --digests=trueविकल्प का उपयोग करते हैं तो आप इन दो प्रविष्टियों में अंतर देख सकते हैं (असंगत प्रविष्टि में डॉकर कंटेंट ट्रस्ट सिग्नेचर डाइजेस्ट है):

# 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     

ध्यान दें कि पॉल में 18892 के मुद्दे का जिक्र है :

एक हस्ताक्षरित छवि को खींचने के बाद, <none>" docker images" आउटपुट में " अतिरिक्त" प्रविष्टि (टैग के साथ ) है ।
इससे rmiछवि को मुश्किल होता है (आपको इसे मजबूर करना पड़ता है, या फिर पहले ठीक से टैग की गई प्रविष्टि को हटा दें, या डाइजेस्ट द्वारा हटा दें।


6
यह <none>मेरे लिए -tagged छवियों को नहीं हटाया (उदाहरण के लिए foo/bar:<none>); मुझे प्रयोग करना था docker images --digestsऔर docker rmi foo/bar@<digest>जैसा कि सफलता
जनक बंडारा

1
@JanakaBandara धन्यवाद। मैंने आपकी टिप्पणी को उत्तर में (कुछ अतिरिक्त लिंक के साथ) शामिल किया है
VonC

मेरे लिएsudo 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
जेमी हटबर

@JamieHutber "docker rmi" को कम से कम 1 तर्क की आवश्यकता है। यह सुझाव देता है कि डॉकटर चित्र --filter "लटकना = सत्य" -q --no-trunc कुछ भी नहीं देता है, जिसका अर्थ है कि कोई खतरे वाली छवियां नहीं हैं?
VonC

धन्यवाद VonC वास्तव में यह नहीं हैhutber@hutber-blade /var/www/dockerfile-wizard $ sudo docker images --filter "dangling=true" -q --no-trunc sha256:c58f4e4b10b1f862d78f96e90bdf13ffe37993279d0992be46d5c15dad51421e sha256:db28e821bc3f337caf711a664bc529be5db8894dd73c5b013ad814cc1e9fc21b sha256:257936750a7d43ae77c713c2cb18342be935de7d3b8fad23d6664fc64acfe753 sha256:6b815cefeb527885b2b9dd831f7f40b05942f00d1367274833a6274154d8ce43
जेमी हटर

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

आप इसे बस कोशिश कर सकते हैं


1
मेरे लिए सबसे आसान और आसान उपाय
मार्क

--forceआखिर में जोड़ना है । तो कमान इस तरह दिखाई docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force
देगी-

23

docker की छवि prune सभी झूलने वाली छवियों को हटाता है (टैग टैग के साथ)। docker की इमेज prune -a ऐसी किसी भी इमेज को हटा देगा, जिसमें कोई कंटेनर नहीं है जो उनका उपयोग करता है।

इस स्टैकओवरफ़्लो थ्रेड में झूलने और अप्रयुक्त छवियों के बीच अंतर को समझाया गया है ।


6

आप जा सकते हैं docker rmi $(docker images -f "dangling=true" -q)। अधिक विकल्पों के लिए चित्र प्रलेखन देखें ।

$ 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 images -f "dangling=true"

और उन्हें इस docker rmiतरह कमांड करने के लिए पुनर्निर्देशित करें :

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

सूचना -qपरम केवल कंटेनर के संख्यात्मक आईडी दिखाते हैं।


1
क्या यह मेरे सुझाव के समान नहीं है जो मैंने अपने उत्तर में २०१५ में प्रस्तावित किया था ।
VonC

5

आप देख सकते हैं कि फ़िल्टर 'लटकना' काम नहीं कर रहा है

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

झूलने वाले चित्रों को हटाने के लिए docker system prune का प्रयोग करें

$ 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]

आप --forceपुष्टि के लिए संकेत नहीं देने के लिए उपयोग कर सकते हैं

$ docker system prune --force


4

मैंने docker image prune -fसबसे उपयोगी पाया है और मैं इसे अपने दिन भर के काम के दौरान हर समय उपयोग करता हूं, टैग का उपयोग -fपुष्टि के लिए संकेत नहीं देगा। अधिक जानकारी यहाँ


3

noneनिम्न का उपयोग करके रिपॉजिटरी नाम के रूप में छवियां निकालें :

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

उन छवियों को हटाएं जिनमें noneटैग या रिपॉजिटरी नाम है:

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


2

docker system prune चाल करेंगे, इसे हटाता है

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

लेकिन इसका उपयोग, सावधानी के साथ करें!


2

सभी छवियों को हटाने के लिए noneहमें यह सुनिश्चित करना होगा कि हमने सभी बंद किए गए कंटेनरों को हटा दिया है जिन्हें वे चला सकते हैं:

docker rm $(docker ps -a -q)

तब हम सभी चित्र हटा सकते हैं:

docker image prune


1

नीचे दिए गए आदेश मेरे लिए काम कर रहे हैं। यह केवल सरल grep "" चित्र है और डॉकटर छवि आईडी प्राप्त करें और सभी छवियों को हटा दें। यह करने के लिए के रूप में सरल एकल आदेश।

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


1

यह तानसादियो के उत्तर का विस्तार है:

यदि आपको निम्न त्रुटि हो रही है:

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

आप इसके साथ बाध्य कर सकते हैं --force:

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

1

निम्नलिखित सभी <none>छवियों को हटा देगा

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

आप परिवर्तन docker rmiको हटाने के लिए बाध्य कर सकते हैं, docker rmi -fहालांकि मैं ऐसा करने की सलाह नहीं देता।

कुछ <none>चित्र अन्य छवियों से संबंधित हो सकते हैं ताकि सुरक्षित पक्ष -fटैग का उपयोग न करें ।


0

इसका सरल और स्पष्ट,

यहां तक ​​कि मुझे इस सरल और कुरकुरी त्रुटि को समझने में 3 दिन लगे।

कर्ता की छवि सफलतापूर्वक नहीं बनी है

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

फिर मैंने डॉकरफाइल से 8 वीं पंक्ति को हटा दिया, यह इस समय सिग्नल सफलता थी।

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

यह कहता है कि सफलतापूर्वक टैग किया गया डेमो: एक्सपो, यह लाइन docker प्रक्रिया के दौरान नापसंद है।



0

सब

विंडोज़ प्रेमियों के लिए पॉवरशेल कमांड साझा करना (बस अगर आपके पास बैश, grep या awk नहीं है)

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


0

सभी बाहर निकलने वाले कंटेनरों को हटा दें

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

या एक पैटर्न के अनुसार कंटेनरों को हटा दें

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

0

टैग के साथ सूची docker छवियाँ ID देखने के लिए इसे आज़माएँ <none>

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

और फिर आप टैग के साथ सभी छवि हटा सकते हैं <none>। यह मेरे लिए काम किया।

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


-1

प्रयत्न

docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "<none>" {print $3}') , जबकि क्लीनर कमांड हो सकते हैं

अपडेट किया गया


1
यह उन छवियों को भी हटा देगा जिन्हें टैग नहीं किया गया है <none> जो कि एक बड़ा नॉन है।
के - एसओ में विषाक्तता बढ़ रही है।

मैंने अपना उत्तर दिया है
user2915097

आज्ञा docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "" {print $3}कुछ भी नहीं करती है!
के - एसओ में विषाक्तता बढ़ रही है।


-2

लटकती छवियां पिछले बिल्ड और पुल से भूत हैं, बस उन्हें हटाएं: docker rmi $ (docker images -f "dangling = true" -q)


ओपी कहता है कि उसने इस सटीक कमांड को पहले ही आज़मा लिया था लेकिन यह विफल रहा। साथ ही, यह उत्तर कम से कम दो बार पहले ही दिया जा चुका है।
कारिंगदेव

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

निम्न छवियों को जहां उपयोग में लाया गया है। मुझे लगता है कि इस आदेश से अवांछित छवियों से छुटकारा मिलता है।


2
क्या यह सभी छवियों को नहीं हटाता है?
मरिओनोबायची

3
यह सभी अप्रयुक्त छवियों को हटा देता है और इसे सही उत्तर के रूप में चिह्नित नहीं किया जाना चाहिए।
घाटश्रे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.