डॉकर बिल्ड "संदर्भ तैयार करने में असमर्थ" संदर्भ देता है: संदर्भ एक निर्देशिका होना चाहिए: / उपयोगकर्ता / tempUser / git / docker / Dockerfile "


99

मेरे पास एक छवि Dockerfileबनाने वाला है Ubuntu। लेकिन जब भी मैं दौड़ता हूं

docker build -t ubuntu-test:latest ./Dockerfile

यह कंसोल पर निम्न त्रुटि दिखाता है

संदर्भ तैयार करने में असमर्थ: संदर्भ एक निर्देशिका होना चाहिए: / उपयोगकर्ता / tempUser / git / docker / Dockerfile

मैं Mac OsX पर हूं। मैंने भी कोशिश की sudo। कुछ काम नहीं।

जवाबों:


149

आपको इसके बजाय निर्देशिका को इंगित करने की आवश्यकता है । आपको डॉकफ़िल निर्दिष्ट नहीं करना चाहिए।

docker build -t ubuntu-test:latest .काम करता है ।

docker build -t ubuntu-test:latest ./Dockerfileकाम नहीं करता है


यह इस तरह क्यों है? ऐसा लगता है जब आप आसानी से फ़ाइल को इंगित कर सकते हैं कि यह एक डायर की ओर इशारा करने की आवश्यकता के लिए अजीब लगता है
मोनिका हेडडेक

75

आप -fविकल्प के साथ डॉक बिल्ड भी चला सकते हैं

docker build -t ubuntu-test:latest -f Dockerfile.custom .


1
इसने मेरे लिए काम किया। मेरे मामले में Dockerfile का नाम Dockerfile-abcd था इसलिए मुझे फायर करना पड़ा:docker build -t my-custom-name -f /path_to_my_docker_file/Dockerfile-abcd .
niranjan harpale

17

Dockerfileनिर्माण करते समय निर्दिष्ट करने के लिए, आप उपयोग कर सकते हैं:

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

लेकिन यह विफल हो जाएगा अगर वहाँ ADDया COPYआदेश है कि रिश्तेदार पथ पर निर्भर करता है। वहाँ एक निर्दिष्ट करने के लिए कई तरह से कर रहे हैं contextके लिए docker buildआप का उल्लेख कर सकते, डोकर निर्माण के डॉक्स अधिक जानकारी के लिए।


यह ubuntu 12.04 के लिए किया गया था : docker build -t ubuntu:12.04 - < Dockerfileआपको डॉकरीफाइल
डोमिनिक मोटुका

16

संदर्भों को समझें

docker buildआदेश

डॉकर की बिल्ड कमांड का मूल सिंटैक्स है

docker build -t imagename:imagetag context_dir

प्रसंग

संदर्भ एक निर्देशिका है और यह निर्धारित करता है कि डॉक निर्माण प्रक्रिया क्या देखने जा रही है: डॉकरफाइल के दृष्टिकोण से, context_dir/mydir/myfileआपके फाइल सिस्टम में कोई भी फाइल /mydir/myfileडॉकरफाइल में बन जाएगी और इसलिए निर्माण प्रक्रिया के दौरान।

कर्ता

यदि डॉकफाइल कहा जाता है Dockerfileऔर संदर्भ में रहता है, तो यह नामकरण सम्मेलन द्वारा निहित रूप से पाया जाएगा। यह अच्छा है, क्योंकि इसका मतलब है कि आप आमतौर पर किसी भी डॉकटर कंटेनर में डॉकरफाइल को तुरंत पा सकते हैं।

यदि आप अलग-अलग नाम का उपयोग करने पर जोर देते हैं, तो "/ tmp / mydockerfile" कहें, आप -fइस तरह का उपयोग कर सकते हैं :

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

लेकिन तब डॉकटराइल एक ही फ़ोल्डर में नहीं होगा या कम से कम खोजने में कठिन होगा।


2

यह सरल है, जब भी डॉकर बिल्ड चलाया जाता है, डॉकटर जानना चाहता है, छवि का नाम क्या है, इसलिए हमें पास करना होगा: -t: अब सुनिश्चित करें कि आप उसी निर्देशिका में हैं जहाँ आपके पास अपना डॉकफाइल है और चलते हैं

docker build -t <image_name>:<version> . उदाहरण docker build -t my_apache:latest .मान लें कि आप उसी निर्देशिका में हैं जैसे आपका डॉकफाइल अन्यथा पास-फ़्लैग और डॉकरफ़ाइल।

docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile


मेरे लिए उस दूसरी कमांड को चलाने के लिए मुझे इसे थोड़ा बदलना पड़ा: docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile( .अंत में इसके अलावा ध्यान दें )
जोश

2

मैं उसी मुद्दे का सामना करता हूं। मैं उपयोग कर रहा हूं docker version:17.09.0-ce

मैं नीचे दिए गए चरणों का पालन करता हूं:

  1. डॉकर छवि बनाने के लिए डॉकरीफाइल और अतिरिक्त कमांड बनाएं
  2. डायरेक्ट्री पर जाएं जहां हमने डॉकफाइल बनाया है
  3. कमांड के नीचे निष्पादित करें $ sudo docker build -t ubuntu-test:latest .

इसने समस्या का समाधान किया और छवि को सफलतापूर्वक बनाया।

नोट: बिल्ड कमांड डॉक वर्जन पर निर्भर करता है और साथ ही कौन सा विकल्प हम उपयोग कर रहे हैं। :)


1

मेरे द्वारा त्रुटि प्राप्त करने का एक कारण यह था कि फ़ाइल का नाम यह सुनिश्चित करता है कि फ़ाइल का नाम Dockerfile है इसलिए मुझे यह पता चला, आशा है कि यह किसी की मदद कर सकता है।

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