छवि का उपयोग बंद कंटेनर द्वारा किया जा रहा है


100

मैं इस आदेश द्वारा एक डॉकटर कंटेनर को हटाने का प्रयास कर रहा हूं:

docker rmi <Image-Id>

जाहिर है, मैंने उस छवि-आईडी को प्रतिस्थापित कर दिया है जो मेरे द्वारा उपयोग किए जा रहे आईडी से है:

docker images

लेकिन मुझे नीचे त्रुटि दिखाई देती है:

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

जवाबों:


129

आप --force , -fछवि को हटाने के बल का उपयोग भी कर सकते हैं

यदि आप -f ध्वज का उपयोग करते हैं और छवि की छोटी या लंबी आईडी निर्दिष्ट करते हैं, तो यह कमांड अनटैग करता है और निर्दिष्ट आईडी से मेल खाने वाली सभी छवियों को हटा देता है।

  docker rmi -f <image_id> 

1
धन्यवाद, यह ठीक काम किया, लेकिन एक मुद्दा है। मैंने 10 जीबी की छवि को हटा दिया है, लेकिन इसे हटाने के बाद, मैं अपने फ्री डिस्क स्थान में कोई बदलाव नहीं देख सकता।
मेहरदाद बाबाकी

1
क्या आपने छवि से जुड़ी वॉल्यूम को हटा दिया और क्या आपने प्रत्येक की छवि का आकार चेक किया
Adiii

1
वास्तव में नहीं, मैं नया करने वाला हूं। मैं टूल की कोशिश करूंगा। जिस तरह से मैं वॉल्यूम का पता लगाने और उन्हें हटाने के लिए कमांड लाइन का उपयोग कर सकता हूं?
मेहरदाद बाबाकी

1
हाँ docker मात्रा ls; वॉल्यूम को हटाने और निकालने के लिए, docker वॉल्यूम rm v_id
Adiii

42

आप के साथ बंद कंटेनर को हटाने की जरूरत है docker rm, और फिर आप इसके साथ उपयोग की गई छवि को हटा सकते हैं docker rmi


3
यह किसी भी पूर्ण उत्तर का हिस्सा है। आप या तो हटाए गए चित्र को हटाने या हटाने के लिए बाध्य कर सकते हैं।
bmacnaughton

31

आपको यह भी पता चल सकता है कि आपने कंटेनर बंद कर दिए हैं जो लॉक का कारण बन रहे हैं। इनका उपयोग करके पहले निकालें:

docker rm  $(docker ps -q -a)

यहां हम केवल आईडी द्वारा docker प्रक्रियाओं को सूचीबद्ध कर रहे हैं और फिर उन्हें हटा रहे हैं; हालांकि, डॉक आरएम केवल बंद किए गए कंटेनरों को हटा देगा।

अगला वापस जाएं और छवियों का उपयोग करके निकालें:

docker image rm <image_id>

23

आपको पहले कंटेनर को निकालना होगा।
मजबूरन लेने की आखिरी विधि है।

#check container
docker ps -a

#remove container
docker rm containerID

3
स्पष्ट रूप से सबसे अच्छा जवाब। केवल वही जो समझाता है कि बंद कंटेनर की सूची कैसे प्राप्त करें।
मार्को

4

मामले में docker rmi <image-id>काम नहीं किया, यह कोशिश:

सभी चल रहे कंटेनरों को रोकें

docker stop $(docker ps -aq)

सभी कंटेनर निकालें

docker rm $(docker ps -aq)

सभी छवियों को निकालें

docker rmi $(docker images -q)

3

अन्य उत्तरों के अलावा, मेरे पास मैक के लिए डॉकर का उपयोग करने का एक ही मुद्दा था, लेकिन docker ps -aकोई भी चलने वाले कंटेनर नहीं दिखा। रनिंग docker imagesशो:

docker/desktop-storage-provisioner   v1.0                605a0f683b7b        2 months ago        33.1MB
k8s.gcr.io/kube-controller-manager   v1.15.5             1399a72fa1a9        6 months ago        159MB
k8s.gcr.io/kube-proxy                v1.15.5             cbd7f21fec99        6 months ago        82.4MB
k8s.gcr.io/kube-apiserver            v1.15.5             e534b1952a0d        6 months ago        207MB
k8s.gcr.io/kube-scheduler            v1.15.5             fab2dded59dd        6 months ago        81.1MB
docker/kube-compose-controller       v0.4.23             a8c3d87a58e7        11 months ago       35.3MB
docker/kube-compose-api-server       v0.4.23             f3591b2cb223        11 months ago       49.9MB
k8s.gcr.io/coredns                   1.3.1               eb516548c180        16 months ago       40.3MB
k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        17 months ago       258MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

यदि आपके पास कुबेरनेट सक्षम है, तो इन सभी छवियों का उपयोग डॉकर ऐप द्वारा किया जाता है। मैक वरीयताओं के लिए डॉकर में, कुबेरनेट्स के लिए एक अनुभाग है। यदि आप "शो सिस्टम कंटेनर (उन्नत)" पर क्लिक करते हैं, तो वे दिखाई देंगेdocker ps

यदि आप इन चित्रों को हटाना चाहते हैं, तो आपको मैक ऐप के लिए डोकर के माध्यम से कुबेरनेट्स को अक्षम करने की आवश्यकता है, फिर पुन: प्रयास करें।


2

डॉक कंटेनर डॉक छवियों के शीर्ष पर चलते हैं, आप केवल एक छवि को हटा सकते हैं यदि यह किसी भी कंटेनर से जुड़ा नहीं है! तो आपको कंटेनर को रोकना होगा और कंटेनर को निकालना होगा फिर आप छवि आईडी को हटा सकते हैं।

डॉकटर कंटेनर-आईडी और डॉक आरएम कंटेनर-आईडी को रोकते हैं

फिर इमेज डूकर rmi इमेज-आईडी को हटाने का प्रयास करें

नीचे दिए गए लिंक में कुछ अतिरिक्त जानकारी। चीयर्स।!

https://docs.docker.com/config/pruning/


स्टॉप कंटेनर (docker-compose stop) -> कंटेनर हटाएं (docker rm <कंटेनर का नाम)) -> संबंधित चित्र (docker rmi <image_id>) को हटाने की प्रक्रिया के बाद यह सही उत्तर होना चाहिए।
kta

1

यदि लक्ष्य डिस्क स्थान को पुनः प्राप्त करना है, तो अभी तक उल्लेखित एक और दृष्टिकोण का उपयोग नहीं करना है 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

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


0

यदि आप बदल गए हैं Dockerfileऔर यदि आप docker कंपोज़ का उपयोग कर रहे हैं, तो आप विकल्प के docker-compose साथ रन करके अपनी छवि को फिर से बना सकते हैं --build!


आप पर किसी भी परिवर्तन किए हैं Dockerfileआप छवि अपने आप को सिर्फ फ़्लैग का उपयोग हटाने shoudn't --buildसाथ docker-composeतो यह परिवर्तन के साथ एक नई छवि के पुनर्निर्माण
ans1genie
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.