डेमन से डॉकटर त्रुटि प्रतिक्रिया: "संघर्ष ... पहले से ही कंटेनर द्वारा उपयोग में"


135

मैं अपने निर्देश में क्वांटम जीआईएस चलाने के लिए अपने पीसी पर डॉकर का उपयोग कर रहा हूं, जो मैंने यहां पाया है: docker-qgis-desktop - एक साधारण डॉकटर कंटेनर जो QGIS डेस्कटॉप चलाता है

पिछले सप्ताह तक सब कुछ ठीक चल रहा था जब मुझे यह त्रुटि संदेश मिलना शुरू हुआ:

Error response from daemon: Conflict. 
The name "qgis-desktop-2-4" is already in use by container 235566ae17b8. 
You have to delete (or rename) that container to be able to reuse that name.

मुझे पूरी तरह से यकीन नहीं है कि इस साइट पर सुराग खोजने के बावजूद इसका क्या मतलब है। मैंने ऐसा होने से पहले कुछ भी नहीं बदला था और इस आदेश के साथ कंटेनर को सफलतापूर्वक लॉन्च किया गया था:

sudo docker run --rm --name="qgis-desktop-2-4"     -i -t     -v ${HOME}:/home/${USER}     -v /tmp/.X11-unix:/tmp/.X11-unix     -e DISPLAY=unix$DISPLAY     kartoza/qgis-desktop:latest

मैं इसे कैसे ठीक करूं?

जवाबों:


217

यह एक कंटेनर जैसा दिखता है जिसका नाम qgis-desktop-2-4सिस्टम में पहले से मौजूद है। यदि यह वास्तव में मौजूद है, तो पुष्टि करने के लिए आप नीचे दिए गए कमांड के आउटपुट की जांच कर सकते हैं:

$ docker ps -a

उपरोक्त कमांड के आउटपुट में अंतिम कॉलम नामों के लिए है।

यदि कंटेनर मौजूद है, तो इसका उपयोग करके निकालें:

$ docker rm qgis-desktop-2-4

या जबर्दस्ती,

$ docker rm -f qgis-desktop-2-4

और फिर एक नया कंटेनर बनाने का प्रयास करें।


टिप्पणी के लिए हे @ शर्म मैंने कोशिश की कि लेकिन अब निम्न त्रुटि संदेश प्राप्त करेंgroupadd: GID '0' already exists useradd: user 'root' already exists No protocol specified Warning: qgis.bin: cannot connect to X server unix:0.0
marty_c

ऐसा लगता है जैसे छवि उपयोगकर्ता को मूल बनाने की कोशिश करती है, और एक जड़ समूह जो वास्तव में दोनों पहले से मौजूद है। डॉकर रूट का उपयोग करता है: रूट डिफ़ॉल्ट उपयोगकर्ता और समूह के रूप में। लेकिन पहला मुद्दा तब ठीक किया जाता है जब आपने पहला कंटेनर हटाया था।
लक्सा

हम्म, अजीब है तो यह 3 या 4 महीने के साथ शुरू करने के लिए ठीक काम क्यों कर रहा था। किसी भी विचार मैं इसे ठीक करने के लिए क्या कर सकता हूँ ?!
mart__c

1
हम सिर्फ पुराने को मारने और एक ही नाम के साथ फिर से शुरू करने के बजाय मौजूदा कंटेनर को कैसे पुनः आरंभ कर सकते हैं?
धनेश माने

13
@DhaneshMane docker restart, या docker stopऔर docker startआप मदद करनी चाहिए।
धर्मित

34

आदेश के बजाय: docker run

आपको उपयोग करना चाहिए:

docker start **CONTAINER ID**

क्योंकि कंटेनर पहले से मौजूद है

और जानकारी


1
'docker start' होस्ट नेटवर्किंग को सक्षम करने, कमांड लाइन से वॉल्यूम को माउंट करने और मेरे मामले में आवश्यक अन्य विकल्पों को विकल्प नहीं देता है। तो व्यक्तिगत रूप से मुझे (prune) हटाना था तो चलाओ।
एचएच-

1
@horsehair जब मैं docker का उपयोग करता हूं तो शुरू करें <myContainerName> यह सभी उजागर पोर्ट और वॉल्यूम माउंट को पुन: स्थापित करता है। तो इस बात पर निर्भर करता है कि आपने अपने कंटेनर को शुरू में कैसे चलाया, उन सेटिंग्स को डॉक स्टार्ट के साथ हल करना चाहिए।
djchapm

हाँ, इस तरह के बेकार के रूप में मैं चाहता हूँ कि यह दोनों तरीकों से काम करे .... शुरू करें / डेवलपर्स के लिए चलाएं जो टीम में शामिल हों और उन डेवलपर्स के लिए जो एक बार पहले भाग चुके थे। यह बहुत ही सुखद नहीं है :( ओह, ठीक है, मुझे लगता है कि मुझे कुछ करना होगा अगर बैश स्क्रिप्ट में तर्क
डीन हिलर

9

मुझे यह त्रुटि बहुत अधिक लगी, इसलिए अब मैं एक बार में सभी अप्रयुक्त कंटेनरों को हटाने का काम करता हूं:

docker container prune 

-fशीघ्र हटाने के लिए बल जोड़ने के लिए।

सभी अप्रयुक्त कंटेनरों को हटाने के लिए (हटाने के बिना):

docker container ls -a --filter status=exited --filter status=created 

अन्य वस्तुओं (नेटवर्क, वॉल्यूम, इत्यादि) को अधिक से अधिक कैसे करें, यहां देखें ।


8

मेरे जैसे Google से यहां उतरने वाले लोगों के लिए और बस एक साझा सेवा के साथ कई डॉकटर-कंपोज़ फ़ाइलों का उपयोग करके कंटेनर बनाना चाहते हैं:

कभी-कभी आपके पास अलग-अलग परियोजनाएं होती हैं जो साझा करती हैं जैसे डेटाबेस डेटाबेस कंटेनर। केवल पहला रन DB-Docker शुरू करना चाहिए, दूसरा पता लगाया जाना चाहिए कि DB पहले से चल रहा है और इसे छोड़ दें। इस तरह के व्यवहार को प्राप्त करने के लिए हमें एक ही नेटवर्क में और एक ही परियोजना में डॉकर्स की आवश्यकता होती है । साथ ही डॉकटर कंटेनर नाम भी वैसा ही होना चाहिए।

1: एक ही नेटवर्क और कंटेनर का नाम डॉकटर-कंपोज में सेट करें

परियोजना 1 में डॉकटर-रचना:

version: '3'

services:
    service1:
        depends_on:
            - postgres
        # ...
        networks:
            - dockernet

    postgres:
        container_name: project_postgres
        image: postgres:10-alpine
        restart: always
        # ...
        networks:
            - dockernet

networks:
    dockernet:

परियोजना 2 में डॉकटर-रचना:

version: '3'

services:
    service2:
        depends_on:
            - postgres
        # ...
        networks:
            - dockernet

    postgres:
        container_name: project_postgres
        image: postgres:10-alpine
        restart: always
        # ...
        networks:
            - dockernet

networks:
    dockernet:

दूसरा: -p परम का उपयोग करके एक ही प्रोजेक्ट सेट करें या दोनों फाइलों को एक ही डायरेक्टरी में रखें।

docker-compose -p {projectname} up

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.