ডকার: "বিল্ড" এর জন্য 1 টি আর্গুমেন্ট দরকার। 'ডকার বিল্ড হেল্প' দেখুন


315

ডকার ওয়েবসাইট থেকে ডকার চিত্র তৈরির জন্য নির্দেশাবলী অনুসরণ করার চেষ্টা করছেন।

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

এই ত্রুটিটি হ'ল আমি ডকটির নির্দেশাবলী অনুসরণ করব এবং এই ডকফাইফিলটি ব্যবহার করব

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
আপনি দয়া করে ঠিক কমান্ডটি চিহ্নিত করতে পারেন: "ডকার বিল্ড -ট মাইটাগ।" বিন্দুটি দেখতে পেলেন না
nekperu15739

6
@ user2915097 আমি এতে সম্মত নই। (ডট) এর অর্থ স্থানীয় ডিরেক্টরি, কারণ -f (--file) বিকল্পটি ব্যবহার করার সময়। (ডট) এখনও বাধ্যতামূলক।
andolsi

5
দ্য .
বিল্ডটির

34
প্রশ্নের জনপ্রিয়তাটি অস্পষ্ট ডকার কমান্ড সিনট্যাক্সটি কীভাবে দেখায় ... ব্যক্তিগতভাবে আমি ভেবেছিলাম যে বিন্দুর অর্থ বাক্যটির ঠিক সমাপ্তি ...
হতাশ

2
দস্তাবেজ.ডোকার.com / get - start / part2 / #apppy থেকে হ্যালো - আমি দেখতে অন্ধ ছিলাম। না হয়!
অ্যালেক্স জানসেন

31

আপনি অন্য কোথাও (ওয়েবপৃষ্ঠা বা অন্য কোনও ফাইল) থেকে বিল্ড কমান্ডটি অনুলিপি করেছেন? স্ক্র্যাচ থেকে এটি টাইপ করার চেষ্টা করুন।

আমি একটি এডাব্লুএস টিউটোরিয়াল থেকে বিল্ড কমান্ডটি অনুলিপি করে এটিকে আমার টার্মিনালে আটকালাম এবং এই ত্রুটিটি পাচ্ছি। এটা আমাকে পাগল করে চলেছে হাত দিয়ে টাইপ করার পরে, এটি কাজ করে! আমার পূর্ববর্তী ব্যর্থ কমান্ডগুলি সন্ধান করে আমি লক্ষ্য করেছি যে "ড্যাশ" চরিত্রটি অন্যরকম ছিল, এটি "মাইনাস / ড্যাশ" কী ব্যবহার করে নিজেই টাইপ করা হলে আমার চেয়ে যে পাতলা, লম্বা ড্যাশ অক্ষর ছিল তার চেয়ে বেশি।

খারাপ:

sudo ডকার বিল্ড এফ ফু।

ভাল:

sudo ডকার বিল্ড -t foo।

আপনি কি পার্থক্যটি দেখতে পাচ্ছেন? .. কাটা এবং পেস্ট করা শক্ত।


22

নিম্নলিখিত কমান্ড ব্যবহার করুন

docker build -t mytag .

নোট করুন যে মাইটাগ এবং ডটের মধ্যে একটি স্পেস রয়েছে। এই বিন্দুটি বর্তমান কার্যক্ষম ডিরেক্টরিকে উপস্থাপন করে।


17

এখানে চিত্র বর্ণনা লিখুনকমান্ডের শেষে একটি স্পেস সহ ডট (।) সরবরাহ করুন।

উদাহরণ:

কমান্ড: ডকার বিল্ড -t "ব্লিঙ্ক: ভি 1"।

এখানে আপনি "পলক: v1" দেখতে পারেন তারপরে একটি স্পেস পরে বিন্দু (।)

এটাই.


16

আমার ক্ষেত্রে এই ত্রুটিটি একটি গিটল্যাব সিআই পাইপলাইনে ঘটছিল যখন আমি একাধিক গিটলব এনভ ভেরিয়েবলগুলি পতাকা docker buildসহ দিয়ে যাচ্ছিলাম --build-arg

দেখা যাচ্ছে যে ভেরিয়েবলগুলির মধ্যে একটিতে এর মধ্যে একটি স্পেস ছিল যা ত্রুটির কারণ হচ্ছিল। পাইপলাইন লগগুলি কেবলমাত্র এটি দেখায় তাই এটি খুঁজে পাওয়া কঠিন ছিল $VARIABLE_NAME

পরিবেশের ভেরিয়েবলগুলি উদ্ধৃত করার বিষয়টি নিশ্চিত করুন যাতে স্পেসগুলি সঠিকভাবে পরিচালিত হয়।

থেকে পরিবর্তন করুন:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

প্রতি:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"

1
আমার googling সংরক্ষণ করুন;)
Adiii

আমার ঠিক এই সমস্যাটি ছিল। আপনাকে অনেক ধন্যবাদ!
ফাই

10


আপনার শেষে একটি ডট লাগবে ...


উদাহরণস্বরূপ:

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

এটি কিছুটা গোপন, তবে আপনি যদি .শেষে মনোযোগ দিন ...


1
আপনি আমার দিন বাঁচিয়েছেন। আপনাকে ধন্যবাদ.
ফ্যাটএইচভি

3

আপনি একটি ফাইল থেকে ডকার ইমেজ তৈরি করতে পারেন ডকার ফাইল এবং ডকফাইফিলের নাম ডিফল্টরূপে। এটি আপনার ডকার পাত্রে প্রয়োজনীয় কমান্ড / নির্দেশের সেট করেছে। নীচের কমান্ডটি সর্বশেষ ট্যাগ সহ চিত্র তৈরি করে, ডকফেরফিলকে সেই অবস্থানে উপস্থিত করা উচিত (যার অর্থ বর্তমান নির্দেশিকা)

docker build . -t <image_name>:latest

ডিফল্ট না হয়ে থাকলে ফাইলের নাম (ডকফেরফাইল) সেমেল ডকার ফাইলের বিষয়বস্তু আপনি ডকফাইফিল -f এর মাধ্যমে উল্লেখ করতে পারেন।

FROM busybox
RUN echo "hello world"

2

ডকারের পুরানো সংস্করণগুলিতে মনে হয় আপনার এই অর্ডারটি ব্যবহার করা দরকার:

docker build -t tag .

এবং না

docker build . -t tag


1

পাওয়ারশেল্যান্ডটি খুলুন এবং এই বিধি অনুসরণ করুন। উইন্ডোজ এস-তে এই ধরণের ত্রুটিটি টিপিকভাবে হয় যখন আপনি কমান্ড বিল্ড ব্যবহার করেন তখন একটি বিকল্প এবং একটি পথ প্রয়োজন।

এই ধরণের ত্রুটি রয়েছে কারণ আপনি আপনার ডকফাইফিলের মতো কোনও পথ নির্দিষ্ট করেন নি।

এটা চেষ্টা কর:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. বন্ধুত্বহেলো হ'ল সেই নামটি যাকে আপনি আপনার প্রতিবেদককে নিয়োগ করেছেন
  2. সি: \ ব্যবহারকারীগণ \ ড্যানিয়েল \ অ্যাপ্লিকেশন the এমন এক পথ যা আপনার ডকফাইফিলের পক্ষে

আপনি যদি একটি ট্যাগ যুক্ত করতে চান

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 .

লক্ষ্য করুন যে ডকার একটি প্যারামিটার হিসাবে একটি ডিরেক্টরি এবং বিকল্প হিসাবে ফাইলের নামটি প্রত্যাশা করে।


0

আমার সমস্যাটি ছিল ডকফেরফাইল.টিএসটিএক্সকে ইউনিক্স এক্সিকিউটেবল ফাইলে রূপান্তর করা দরকার। একবার আমি যে ত্রুটি চলে গেছে।

এটি করার আগে আপনাকে .txt অংশটি সরিয়ে ফেলতে হবে, তবে ম্যাকের উপর দিয়ে টার্মিনালটিতে গিয়ে সিডি করতে হবে যেখানে আপনার ডকফেরফাইল রয়েছে এবং সেই টাইপটি লিখুন

chmod +x "Dockerfile"

এবং তারপরে এটি আপনার ফাইলটিকে একটি ইউনিক্স এক্সিকিউটেবল ফাইলে রূপান্তরিত করবে যা ডকার বিল্ড কমান্ড দ্বারা কার্যকর করা যেতে পারে।


0

নিম্নলিখিত কমান্ডটি আমার পক্ষে কাজ করেছিল। আমার অ্যাপ-মাস্টার ফোল্ডারে ডকার ফাইলটি রাখা হয়েছিল।

ডকার বিল্ড -f মাই-অ্যাপ-মাস্টার / ডকফাইফাইল - আমার মাই-অ্যাপ-মাস্টার।


-4

ডকার বিল্ড কমান্ড ফর্ম্যাট

আপনার পাওয়ারশেলের মধ্যে: এই ধরণের ত্রুটি রয়েছে কারণ আপনি নিজের ডকফাইফিলের সাথে কোনও পথ নির্দিষ্ট করেন নি।

এটা চেষ্টা কর:

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

বন্ধুত্বহেলো হ'ল নামটি যা আপনি আপনার ধারককে অর্পণ করেছেন এবং সংস্করণ যুক্ত করুন, কেবলমাত্র এটি ব্যবহার করুন : সর্বশেষ

-f সি: \ TestDockerApp \ Dockerfile.txt - আপনি কারণ বিল্ড কমান্ড পরামিতি অথবা ট্যাগ দরকার একটি ট্যাগ যুক্ত করতে চাই - দ্য DockerFile একটি টেক্সট ডকুমেন্ট যাতে স্পষ্টভাবে এক্সটেনশন যোগ .txt

** এই ফর্ম্যাটটি ব্যবহার করে দেখুন:

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

1
আপনার সরবরাহ করা আদেশটি একই ত্রুটির সাথে ব্যর্থ হওয়া উচিত। আপনার অবশ্যই একটি বিল্ড কনটেক্সটটিকে আর্গুমেন্ট হিসাবে অন্তর্ভুক্ত করতে হবে, প্রায়শই .বর্তমান ডিরেক্টরি নির্দেশ করার জন্য বিল্ড কনটেক্সট হিসাবে ডকার ইঞ্জিনে প্রেরণ করা উচিত।
বিএমইচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.