docker: अमान्य संदर्भ प्रारूप


104

मैं इस ट्यूटोरियल का अनुसरण कर रहा हूं: https://medium.com/towards-data-science/number-plate-detection-with-supervitely-and-tensorflow-part-1-e84c74d4382c

और वे डॉकटर का उपयोग करते हैं। जब मैंने डॉक चलाने की कोशिश की (रन स्क्रिप्ट के अंदर):

docker run -p 8888:8888 -v `pwd`/../src:/src -v `pwd`/../data:/data -w /src supervisely_anpr --rm -it bash

मुझे त्रुटि मिली:

docker: invalid reference format.

मैंने 2 घंटे बिताए और मैं वास्तव में नहीं समझ सकता कि क्या गलत है। किसी भी विचार वास्तव में सराहना की।


3
इसे docker run -p 8888:8888 -v "`pwd`/../src":/src -v "`pwd`/../data":/data -w /src --rm -it supervisely_anpr bash
आज़माइए

5
जैसा @TarunLalwani और @Oleg आप को ले जाना होगा उल्लेख किया --rmऔर -itबीच में runऔर चित्र नाम। हालांकि यह त्रुटि संदेश की व्याख्या नहीं करेगा। क्या आपने जांचा कि क्या छवि नाम के पात्रों में कोई विशेष एन्कोडिंग या ऊपरी मामला नहीं है? आपके स्निपेट से कॉपी और पेस्ट मेरे लिए काम करता है, जबकि docker run --rm foo! bashआपकी जैसी ही त्रुटि प्रिंट करता है।
गेज़ेलिक्स

3
इसका उत्तर पोस्ट करने पर विचार करना इतना आसान है कि अगले आदमी के लिए
खोजा जाए

4
जब तक आप वास्तव में स्ट्रिंग को शब्दों में विभाजित नहीं करना चाहते, तब तक हमेशा डबल-उद्धरण डॉलर का विस्तार। यहां, उपयोग "$(pwd)"(आधुनिक रूप "`pwd`")। आपकी आज्ञा बन जाती है docker run -p 8888:8888 -v "$(pwd)"/../src:/src -v "$(pwd)"/../data:/data -w /src supervisely_anpr --rm -it bash
मार्टिन जाम्बोन

1
@gesellix धन्यवाद। नए सामान को सीखने के दौरान मैनुअल से कॉपी-पेस्ट करने वाली कमांड्स को पहले स्थान पर नहीं किया जाना चाहिए, एक तरफ यह अप्रत्याशित दर्द ला सकता है जब कुछ डरपोक दूषित प्रतीक शामिल हो जाता है। अच्छी बात यह है कि मैंने आपकी टिप्पणी को "त्रुटि" ^ _ ^ पर दो घंटे या आधे दिन बिताने से पहले देखा
डेन ड्रोबियाज़ो

जवाबों:


88

शक्तियों में आपको ${pwd}बनाम का उपयोग करना चाहिए$(pwd)


7
इस कारण से मुझे अपना सिर दीवार में
फोड़ना पड़ा

docker run --rm -ti --name zalenium -p 4444:4444 -p 5555:5555 \ -e SAUCE_USERNAME -e SAUCE_ACCESS_KEY \ -v /tmp/videos:/home/seluser/videos \ -v /var/run/docker.sock:/var/run/docker.sock \ dosel/zalenium start --sauceLabsEnabled trueमेरी आज्ञा में गलत क्या है? यह भी वही त्रुटि दे रहा है।
पॉल

आपको बहुत - बहुत धन्यवाद!
एंड्रयू ब्रेनन

45

"रन" के बाद पहला तर्क जो ध्वज नहीं है या ध्वज का पैरामीटर छवि नाम के रूप में पार्स किया गया है। जब वह पार्सिंग विफल हो जाता है, तो यह आपको संदर्भ प्रारूप, उर्फ ​​छवि नाम (लेकिन एक छवि आईडी, पिन की गई छवि या अन्य वाक्यविन्यास हो सकता है) को अमान्य बताता है। आपकी आज्ञा में:

 docker run -p 8888:8888 -v `pwd`/../src:/src -v `pwd`/../data:/data -w /src supervisely_anpr --rm -it bash

छवि का नाम "पर्यवेक्षी रूप से_प्रधान" मान्य है, इसलिए आपको पहले कमांड में देखने की आवश्यकता है। इस मामले में, त्रुटि pwdएक स्थान के साथ एक पथ के आउटपुट से सबसे अधिक संभावना है। अंतरिक्ष के बाद सब कुछ अब एक पैरामीटर नहीं है -vऔर डॉकटर इसे छवि नाम के रूप में पार्स करने की कोशिश करता है। वॉल्यूम मापदण्डों को उद्धृत करने के लिए जब आप यह गारंटी नहीं दे सकते कि यह रिक्त स्थान या अन्य विशेष वर्णों से मुक्त है।

जब आप ऐसा करेंगे, तो आपको अगली त्रुटि का सामना करना पड़ेगा, "निष्पादन योग्य नहीं मिला"। छवि नाम के बाद सब कुछ कंटेनर के अंदर चलाने के लिए कमांड के रूप में पार्स किया जाता है। आपके मामले में, यह कमांड को चलाने की कोशिश करेगा --rm -it bashजो लगभग निश्चित रूप से विफल हो --rmजाएगा क्योंकि आपकी छवि के अंदर बाइनरी के रूप में कोई अस्तित्व नहीं होगा। इसे हल करने के लिए आपको मापदंडों को फिर से व्यवस्थित करना होगा:

 docker run --rm -it -p 8888:8888 -v "`pwd`/../src:/src" -v "`pwd`/../data:/data" -w /src supervisely_anpr  bash

मैंने अपनी स्लाइड में इन दो त्रुटियों और कारणों के बारे में कुछ और विवरण यहाँ दिए हैं: https://sudo-bmitch.github.io/pretations/dc2018/faq-stackoverflow-lightning.html#29


3
स्लाइड 30 ने मेरी समस्या हल कर दी। मेरे पास .sh फ़ाइल सिगविन में चल रही थी। मैं बदल गया # !/bin/bashहै (ध्यान दें के बीच की जगह #और !करने के लिए #!/bin/bash और फिर End of Line Sequenceसे CRLFकरने के लिए LF।।। स्लाइड्स साझा करने के लिए बस इतना ही था मैंने किया धन्यवाद @BMitch
blongho

10

मेरे पास copy-pastedकमांड होने पर यही मुद्दा था । इसके बजाय, जब मैंने टाइप किया-पूरे कमांड में, यह काम किया!

शुभ लाभ...


2
वाह, यह वास्तव में मदद की।
मटजैग

3
हाँ, मेरे लिए यह संपादक ऑटो बदलने के कारण --nameचिपकाया गया था -। धन्यवाद आपने मेरा समय बचाया।
रिवी पांडे

7

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। समस्या मैं कर रहा था $(pwd)वहाँ एक जगह थी जो फेंकने वाला फेंकने वाला था।

निर्देशिका नाम को वहां पर स्थान नहीं होने के लिए बदलें, और यह समस्या होने पर काम करना चाहिए


3

मैं इस मुद्दे में भाग गया जब मेरे पास एक पर्यावरण चर सेट नहीं था।

docker push ${repo}${image_name}:${tag}

repoऔर image_nameपरिभाषित किया tagगया था, लेकिन नहीं था।

इसके परिणामस्वरूप हुआ docker push repo/image_name:

जिसे फेंक दिया docker: invalid reference format.


मुझे भी यही समस्या थी और मैंने इसे लापता पर्यावरण चर निर्यात टैग = नवीनतम
PHZ.fi-Pharazon

1

पाया गया कि docker-compose configरिपोर्ट में बताया गया है कि समस्या क्या थी।

मेरे मामले में, एक ओवरराइड फ़ाइल एक प्रविष्टि के साथ रचना करती है जो कुछ भी नहीं ओवरराइड कर रही थी ।


0

यह तब भी होता है जब आप उत्पादन में, नीचे जैसे विकासक का उपयोग करते हैं। आप उत्पादन में छवियों का निर्माण नहीं करना चाहते हैं क्योंकि यह कंटेनरों की विचारधारा को तोड़ता है। हमें चित्र तैनात करने चाहिए:

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"

निर्मित छवि का उपयोग करने के लिए उसे बदलें:

  web:
    command: /bin/bash run.sh
    image: registry.voxcloud.co.za:9000/dyndns_api_web:0.1
    ports:
      - "8000:8000"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.