docker: "build" को 1 तर्क की आवश्यकता है। देखें 'docker build --help'


315

डॉक वेबसाइट से डॉक छवि बनाने के निर्देशों का पालन करने की कोशिश करना।

https://docs.docker.com/examples/running_redis_service/

यह वह त्रुटि है जो मुझे मिलती है, डॉक्टर पर दिए गए निर्देशों का पालन करते हुए और इस Dockerfile का उपयोग करते हुए

FROM        ubuntu:14.04
RUN         apt-get update && apt-get install -y redis-server
EXPOSE      6379
ENTRYPOINT  ["/usr/bin/redis-server"]


sudo docker build -t myrepo/redis
docker: "build" requires 1 argument. See 'docker build --help'.

कैसे करें समाधान?

जवाबों:


657

आपको एक डॉट जोड़ने की आवश्यकता है, उदाहरण के लिए docker build -t mytag .इसका मतलब है कि आप स्थानीय निर्देशिका में डॉकरफाइल का उपयोग करते हैं, और यदि आप डॉकटर 1.5 का उपयोग करते हैं तो आप डॉकफाइल को दूसरी जगह निर्दिष्ट कर सकते हैं, डॉक निर्माण की मदद से निकालें-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)


3
क्या आप वास्तव में कमांड को चिह्नित कर सकते हैं: "docker build -t mytag।" नहीं देखा डॉट
nekperu15739

6
@ user2915097 मैं इससे सहमत नहीं हूं। (डॉट) का अर्थ है स्थानीय निर्देशिका, क्योंकि जब -f (--file) विकल्प का उपयोग करते हैं, तो डालते हैं। (डॉट) अभी भी अनिवार्य है।
andolsi

5
। बिल्ड के संदर्भ को निर्दिष्ट करता है
औरोलिसी

34
प्रश्न लोकप्रियता से पता चलता है कि डॉक कमांड सिंटैक्स कितना अस्पष्ट है ... व्यक्तिगत रूप से मुझे लगा कि डॉट का मतलब वाक्य का अंत है ...
निराश

2
नमस्कार docs.docker.com/get-started/part2/#apppy से - मैं देखने में बहुत अंधा था। या तो!
एलेक्स जानसन

31

क्या आपने बिल्ड कमांड को कहीं और (वेबपेज या किसी अन्य फ़ाइल) से कॉपी किया है? इसे स्क्रैच से टाइप करने का प्रयास करें।

मैंने एक एडब्ल्यूएस ट्यूटोरियल से एक बिल्ड कमांड की प्रतिलिपि बनाई और इसे अपने टर्मिनल में चिपकाया और यह त्रुटि हो रही थी। यह मुझे पागल बना रहा था। इसे हाथ से टाइप करने के बाद, इसने काम किया! करीब और मेरे पिछले विफल आदेशों को देखते हुए, मैंने देखा कि "डैश" चरित्र अलग था, यह एक पतला, लंबा डैश चरित्र था जितना मुझे मिला अगर मैंने इसे "माइनस / डैश" कुंजी का उपयोग करके टाइप किया।

खराब:

sudo docker build -t foo

अच्छा:

sudo docker build -t foo

क्या आप अंतर देख सकते हैं? .. कट और पेस्ट कठिन है।


22

निम्न आदेश का उपयोग करें

docker build -t mytag .

ध्यान दें कि mytag और dot के बीच एक स्थान है। यह बिंदु वर्तमान कार्य निर्देशिका का प्रतिनिधित्व करता है।


17

यहां छवि विवरण दर्ज करेंकेवल एक स्थान सहित कमांड के अंत में डॉट (।) प्रदान करें।

उदाहरण:

कमांड: docker बिल्ड -t "ब्लिंक: v1"।

यहां आप "पलक: v1" देख सकते हैं, फिर एक स्पेस फिर डॉट (।)

बस।


16

मेरे मामले में यह त्रुटि एक Gitlab CI पाइपलाइन में हो रही थी जब मैं झंडे के docker buildसाथ कई Gitlab env चर पास कर रहा था --build-arg

यह बताता है कि चर में से एक में एक स्थान था जो त्रुटि पैदा कर रहा था। यह पता लगाना मुश्किल था कि पाइपलाइन के लॉग अभी-अभी दिखाए गए हैं $VARIABLE_NAME

पर्यावरण चर को उद्धृत करना सुनिश्चित करें ताकि रिक्त स्थान सही ढंग से संभाले।

से बदलें:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

सेवा:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"


यह ठीक वही समस्या थी जो मुझे थी। आपका बहुत बहुत धन्यवाद!
phi

10


आपको अंत में एक डॉट की आवश्यकता है ...


उदाहरण के लिए:

$ docker build -t <your username>/node-web-app .

यह थोड़ा छिपा हुआ है, लेकिन अगर आप .अंत में ध्यान देते हैं ...


1
आपने मेरा दिन बचाया। धन्यवाद।
फतहवी

3

आप docker फ़ाइल नामक फ़ाइल से docker की छवि बना सकते हैं और डिफ़ॉल्ट रूप से Dockerfile का नाम दे सकते हैं। इसमें कमांड / निर्देश है जो आपको अपने डॉकटर कंटेनर में चाहिए। नीचे दी गई कमांड नवीनतम टैग के साथ छवि बनाती है, डॉकरफाइल को उस स्थान पर मौजूद होना चाहिए (मतलब वर्तमान डाइरेक्ट्री)।

docker build . -t <image_name>:latest

यदि आप फ़ाइल का नाम डिफ़ॉल्ट नहीं है (डॉकफेराइल) समीपी डॉक फाइल सामग्री में, तो आप डॉकरफाइल को निर्दिष्ट कर सकते हैं।

FROM busybox
RUN echo "hello world"

2

डॉकर के पुराने संस्करणों पर ऐसा लगता है कि आपको इस आदेश का उपयोग करने की आवश्यकता है:

docker build -t tag .

और नहीं

docker build . -t tag


1

PowerShelland खोलें और इन istruction का पालन करें। Windows SO में इस प्रकार की त्रुटि टिपिकल रूप से होती है जब आप कमांड बिल्ड का उपयोग करते हैं तो विकल्प और पथ की आवश्यकता होती है।

इस प्रकार की त्रुटि है क्योंकि आपने अपने Dockerfile को सफेद करने के लिए कोई पथ निर्दिष्ट नहीं किया है।

इसे इस्तेमाल करे:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. मित्रतापूर्ण नाम वह नाम है जिसे आप अपने प्रतियोगी को सौंपते हैं
  2. C: \ Users \ Daniele \ app \ वह पथ है जो आपके Dockerfile का विरोध करता है

यदि आप एक टैग जोड़ना चाहते हैं

C:\Users\Daniele\app> docker build -t friendlyhello:3.0 C:\Users\Daniele\app\

1

यदि कोई व्यक्ति इस समस्या में चल रहा है -t, तो छवि को टैग करने की कोशिश कर रहा है और इसे एक ऐसी फ़ाइल से भी बना रहा है जिसका नाम नहीं है Dockerfile(अर्थात केवल .पथ का उपयोग नहीं कर रहा है ), आप इसे इस तरह से कर सकते हैं:

docker build -t my_image -f my_dockerfile .

ध्यान दें कि docker एक विकल्प के रूप में एक निर्देशिका को पैरामीटर और फ़ाइल नाम की अपेक्षा करता है।


0

मेरी समस्या Dixerfile.txt को यूनिक्स एक्ज़ीक्यूटेबल फ़ाइल में बदलने की आवश्यकता थी। एक बार मैंने वह त्रुटि कर दी।

ऐसा करने से पहले आपको .txt भाग को निकालने की आवश्यकता हो सकती है, लेकिन एक मैक पर टर्मिनल और सीडी पर जाएँ निर्देशिका में जहाँ आपका डॉकफ़ाइल है और प्रकार

chmod +x "Dockerfile"

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


0

निम्नलिखित कमांड ने मेरे लिए काम किया। डॉकर फ़ाइल को मेरे ऐप-मास्टर फ़ोल्डर में रखा गया था।

docker build -f my-app-master / Dockerfile -t my-app-master


-4

डॉकर बिल्ड कमांड फॉर्मेट

आपके अधिकार में: इस प्रकार की त्रुटि है क्योंकि आपने अपने डॉकरफाइल के साथ एक पथ निर्दिष्ट नहीं किया है।

इसे इस्तेमाल करे:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt

friendlyhello वह नाम है जिसे आप अपने कंटेनर में असाइन करते हैं और संस्करण जोड़ते हैं, बस : नवीनतम का उपयोग करें

-f C: \ TestDockerApp \ Dockerfile.txt - आप क्योंकि निर्माण आदेश एक पैरामीटर या टैग की जरूरत है एक टैग जोड़ना चाहें - DockerFile पाठ दस्तावेज़ इतना स्पष्ट रूप से एक्सटेंशन जोड़ने है .txt

** इस प्रारूप का प्रयास करें:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**

1
आपके द्वारा प्रदान की गई कमांड उसी त्रुटि के साथ विफल होनी चाहिए। आपको एक निर्माण संदर्भ को एक तर्क के रूप में शामिल करना चाहिए, अक्सर .यह इंगित करने के लिए कि वर्तमान निर्देशिका को निर्माण संदर्भ के रूप में डॉक इंजन में भेजा जाना चाहिए।
BMitch
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.