डॉकर त्रुटि डॉकटर कंटेनर को नहीं हटा सकती, संघर्ष: रिपॉजिटरी संदर्भ को हटाने में असमर्थ


165

मैं डॉकटर पर कंटेनर निकालना चाहता हूं, लेकिन जब आप हटाना चाहते हैं तो एक त्रुटि होती है

कंटेनर हटाने से पहले मेरा अगला कदम, मौजूदा कंटेनर की सूची देखें

sts@Yudi:~/docker$ sudo docker ps -as

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES                  SIZE
78479ffeba5c        ubuntu              "/bin/bash"         42 hours ago        Exited (0) 42 hours ago                       sharp_wescoff          81 B (virtual 187.7 MB)
0bd2b54678c7        training/webapp     "python app.py"     5 days ago          Exited (0) 5 days ago                         backstabbing_ritchie   0 B (virtual 323.7 MB)
0adbc74a3803        training/webapp     "python app.py"     5 days ago          Exited (143) 5 days ago                       drunk_feynman          0 B (virtual 323.7 MB)

एक मैं सूची को हटाना चाहता हूं, जिसका नाम है "प्रशिक्षण / वेबएप" लेकिन एक त्रुटि जो हुई

sts@Yudi:~/docker$ sudo docker rmi training/webapp
Error response from daemon: conflict: unable to remove repository reference "training/webapp" (must force) - container 0bd2b54678c7 is using its referenced image 54bb4e8718e8
Error: failed to remove images: [training/webapp]

क्या कंटेनर छवियों में चल रहा है?

कृपया सहायता कीजिए


यह मेरे साथ कभी-कभी होता है, लेकिन मैं इसका क्या कारण होता है, इसका पैटर्न जानने में असमर्थ हूं (क्योंकि यह हमेशा मेरे साथ नहीं होता है), साथ ही अगर मैं छवि को हटाता हूं तो यह अन्य सामान का एक गुच्छा भी निकाल देता है। क्या आप जानते हैं कि आपके लिए क्या त्रुटि थी? क्या आप इसे पुन: उत्पन्न करने में सक्षम हैं?
चार्ली पार्कर

उत्कृष्ट हाल ही का सारांश , फिल्टर उदाहरणों, पैटर्न आदि के साथ मेलिसा एंडरसन दिसम्बर 2017 से
डॉकटर

जवाबों:


124

Docker की छवियों और docker कंटेनरों में अंतर होता है। इस SO प्रश्न की जाँच करें ।

संक्षेप में, एक कंटेनर एक छवि का एक चल उदाहरण है। यही कारण है कि अगर आप उस छवि से कोई कंटेनर चला रहे हैं, तो आप एक छवि को नहीं हटा सकते। आपको बस पहले कंटेनर को हटाने की आवश्यकता है।

docker ps -a               # Lists containers (and tells you which images they are spun from)
docker images              # Lists images  
docker rm <container_id>   # Removes a container

docker rmi <image_id>      # Removes an image 
                           # Will fail if there is a running instance of that image i.e. container

docker rmi -f <image_id>   # Forces removal of image even if it is referenced in multiple repositories, 
                           # i.e. same image id given multiple names/tags 
                           # Will still fail if there is a docker container referencing image

डॉकर के लिए अद्यतन 1.13+ [जनवरी 2017 से]

डॉकर 1.13 में, हम उस तार्किक वस्तु के नीचे बैठने के लिए हर कमांड को फिर से इकट्ठा करते हैं, जिसके साथ वह इंटरैक्ट कर रहा है

मूल रूप से, ऊपर दिए गए आदेशों को भी फिर से लिखा जा सकता है, अधिक स्पष्ट रूप से, जैसे:

docker container ls -a
docker image ls
docker container rm <container_id>
docker image rm <image_id>

इसके अलावा, आप निकालना चाहते हैं तो सब कुछ आप इस्तेमाल कर सकते हैं:

docker system prune -a

चेतावनी! यह हटा देगा:

  • सभी कंटेनरों को रोक दिया
  • सभी नेटवर्क कम से कम एक कंटेनर द्वारा उपयोग नहीं किए जाते हैं
  • सभी अप्रयुक्त चित्र
  • सभी कैश का निर्माण करते हैं

3
मुझे docker rmi -f idहटाने के लिए "बल" का उपयोग करने के लिए समाप्त हो गया ।
वर्नरसीडी

@WernerCD -fतब मदद करता है जब आप एक ऐसी छवि को हटाना चाहते हैं जो कई रिपॉजिटरी में संदर्भित हो जो एक छवि को निकालने में विफल होने का एक और सामान्य कारण है।
अहमद अब्देलघानी

1
यह ध्यान देने योग्य है कि docker container lsकेवल चल रहे कंटेनरों को सूचीबद्ध करता है। यह मेरे साथ गड़बड़ हो गया जब तक मुझे एहसास नहीं हुआ कि -aध्वज को जोड़ना उन सभी को सूचीबद्ध करता है।
एमएफबी

@MFB अच्छा बिंदु। कमांड के दो सेटों के बीच समानता बनाए रखने के लिए ध्वज को कमांड में जोड़ा गया। धन्यवाद!
अहमद अब्देलघानी

अभी भी OSX Docker Desktop v2.2.0.4 (इंजन 19.03.8) पर काम करता है
rrrrrraul

83

सबसे पहले, कंटेनर नामों को हटा दें

$ sudo docker rm backstabbing_ritchie

परिणाम

$ sudo docker rm backstabbing_ritchie
  backstabbing_ritchie

हटाए जाने वाले कंटेनर पर सूचीबद्ध दूसरे भाग को हटा दें

$ sudo docker rm drunk_feynman 
  drunk_feynman

दूसरा, कंटेनर को हटा दें

$ sudo docker rmi training/webapp

परिणाम

$ sudo docker rmi training/webapp  
  Untagged: training/webapp:latest
  Deleted: 54bb4e8718e8600d78a5d7c62208c2f13c8caf0e4fe73d2bc0e474e93659c0b5
  Deleted: f74dd040041eb4c032d3025fe38ea85de8075992bdce6789b694a44b20feb8de
  Deleted: 7cbae69141977b99c44dc6957b032ad50c1379124d62b7d7d05ab7329b42348e
  Deleted: abb991a4ed5e4cde2d9964aec4cccbe0015ba9cc9838b696e7a32e1ddf4a49bd
  Deleted: 1952e3bf3d7e8e6a9b1e23bd4142e3c42ff7f4b7925122189704323593fd54ac
  Deleted: f95ebd363bf27a7546deced7a41a4099334e37a3d2901fa3817e62bb1ade183f
  Deleted: 20dd0c75901396d41a7b64d551ff04952084cc3947e66c67bae35759c80da338
  Deleted: 2505b734adda3720799dde5004302f5edb3f2a2ff71438f6488b530b728ba666
  Deleted: 2ee0b8f351f753f78f1178000ae37616eb5bf241d4ef041b612d58e1fd2aefdc
  Deleted: 2ce633e3e9c9bd9e8fe7ade5984d7656ec3fc3994f05a97d5490190ef95bce8d
  Deleted: 98b15185dba7f85308eb0e21196956bba653cf142b36dc08059b3468a01bf35d
  Deleted: 515565c29c940355ec886c992231c6019a6cffa17ff1d2abdfc844867c9080c5
  Deleted: 2880a3395eded9b748c94d27767e1e202f8d7cb06f1e40e18d1b1c77687aef77

महाद्वीप की जाँच करें

  $ sudo docker ps -as
  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES                  SIZE
  78479ffeba5c        ubuntu              "/bin/bash"         43 hours ago        Exited (0) 43 hours ago                       sharp_wescoff          81 B (virtual 187.7 MB)

6
यदि आपके पास बहुत सारे पुराने कंटेनर हैं, तो आप rm `docker ps -aq`उन्हें एक बार हटाने के बजाय सफाई के लिए डॉकटर पर भी विचार कर सकते हैं । यहां
फिलीइपिप

छवि को हटाने से पहले नाम हटाना क्यों आवश्यक है? छवि को हटाने की कोशिश क्यों करनी चाहिए w / o सबसे पहले नाम हटाना एक मुद्दा है?
code_dredd 22

@code_dredd "नाम हटाने" जैसी कोई चीज़ नहीं है। यह एक कंटेनर है जिसे एक छवि को हटाने से पहले हटा दिया जाना चाहिए। पर अधिक जानकारी stackoverflow.com/a/40283776/1998422
अहमद Abdelghany

37

यदि आप docker की छवियों और कंटेनरों को साफ़ करना चाहते हैं

चेतावनी: यह सब कुछ फ्लश करेगा

सभी कंटेनरों को रोकें

docker stop $(docker ps -a -q)

सभी कंटेनरों को हटा दें

docker rm $(docker ps -a -q)

सभी छवियों को हटा दें

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

वह काम किया। इसके अलावा, यदि आप कंटेनर को रोकते हैं, तो भी आप इसे एक सूची में देखेंगे। इसलिए, आपको इसे निकालना होगा docker rm $(docker ps -a -q)। धन्यवाद!

28

आप -fकंटेनरों को हटाने के लिए विकल्प का उपयोग कर सकते हैं ।

sudo docker rmi -f training/webapp

आप sudo docker stop training/webappहटाने से पहले कंटेनर का उपयोग बंद कर सकते हैं


1
मैंने इसे आजमाया है, कंटेनर को रोक कर $ sudo docker stop training / webapp त्रुटि प्रतिक्रिया से डेमन: ऐसी कोई आईडी नहीं: प्रशिक्षण / वेबएप त्रुटि: कंटेनरों को रोकने में विफल: [प्रशिक्षण /
वेबएप

आप कंटेनर आईडी के साथ रोकने की कोशिश कर सकते हैं sudo docker stop 0bd2b54678c7
सारिल सुधाकरन

23

यदि आपके पास लॉन्च किए गए कई डॉक कंटेनर हैं, तो इसका उपयोग करें

$ docker rm $(docker ps -aq)

यह "ps -aq" कमांड में सूचीबद्ध सभी वर्तमान डॉकर्स को हटा देगा।

स्रोत: अहगम https://github.com/docker/docker/issues/12487 पर


इसने मेरे लिए काम किया। जब मैंने इस कमांड को चलाया, तब मुझे रन करना था docker image lsऔर फिर आउटपुट docker image rm Xसे प्रत्येक X प्राप्त किया गया था ls
जफ्फुगा

5

नोटिस किया गया यह 2 साल पुराना सवाल है, लेकिन फिर भी मैं इस विशेष प्रश्न के लिए अपना वर्कअराउंड साझा करना चाहता हूं:

सबसे पहले, अपने docker container ls -aपास मौजूद सभी कंटेनरों को सूचीबद्ध करने के लिए चलाएं और जो आप हटाना चाहते हैं उसे इंगित करें।

दूसरे, कमांड के साथ एक को हटा दें docker container rm <CONTAINER ID>(यदि कंटेनर वर्तमान में चल रहा है, तो आपको इसे पहले बंद कर देना चाहिए, docker container stop <CONTAINER ID>निर्दिष्ट कंटेनर को शालीनता से चलाने के लिए, यदि यह जो भी कारण है, इसे बंद नहीं करता है, वैकल्पिक रूप से आप चला सकते हैं docker container kill <CONTAINER ID> to force shutdown of the specified container)।

तीसरा, कंटेनर को चलाकर हटा दें docker container rm <CONTAINER ID>

अंत में आप docker image ls -aसभी छवियों को देखने के लिए चला सकते हैं और जिसको आप चलाना चाहते हैं उसे हटा सकते हैं docker image rm <hash>


2

डॉकटर छवियां निकालें>

सभी कंटेनरों की सूची बनाएं

docker container ls

सभी छवियों को सूचीबद्ध करें

docker image ls

कंटेनर आईडी द्वारा कंटेनर को रोकें

docker container stop <container_id>

कंटेनर आईडी द्वारा कंटेनर निकालें

docker container rm <container_id>

अगर रोकना और हटाना नहीं चाहिए, तो बल हटा सकते हैं

docker container rm -f <container_id>

छवि निकालें

docker image rm <image_id>

किया हुआ!


2

अपने सभी docker चित्रों को सूचीबद्ध करें:

docker images

सभी मौजूद डॉकटर कंटेनरों को सूचीबद्ध करें:

docker ps -a

सभी लक्षित कंटेनरों को हटाएं, जो उस छवि का उपयोग कर रहा है जिसे आप हटाना चाहते हैं:

docker rm <container-id>

लक्षित छवि हटाएं:

docker rmi <image-name:image-tag or image-id>

0

केवल एक विशिष्ट छवि से जुड़े कंटेनरों को निकालें

docker ps -a | grep training/webapp | cut -d ' ' -f 1 | xargs docker rm
  • ps -a: सभी कंटेनरों को सूचीबद्ध करें
  • grep training / webapp: सबकुछ फ़िल्टर करें लेकिन कंटेनरों की शुरुआत प्रशिक्षण / webapp छवि से हुई
  • कट -d '' -f 1: केवल कंटेनर आईडी की सूची दें (अंतरिक्ष द्वारा सीमांकित पहला क्षेत्र)
  • xargs docker rm: कंटेनर को हटाने के लिए docker rm कमांड में कंटेनर आईडी सूची आउटपुट भेजें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.