একটি ডকারের ধারক চালানো এবং শুরু করার মধ্যে পার্থক্য


306

অনুশীলনে আমি একটি ধারক শুরু করার জন্য :

docker run a8asd8f9asdf0

যদি মামলা হয়, কি করে:

docker start

না?

ম্যানুয়ালটিতে বলা হয়েছে

এক বা একাধিক থামানো পাত্রে শুরু করুন


101
রান = তৈরি + শুরু
ফিউমস্কি ওয়েলস

4
আমি আশা করি
ওপি'র

সহায়ক হতে পারে: chat.stackoverflow.com/transcript/76919
শুভম

@ মনিকা হেইডনেক ডক আছে execute?
Koray Tugay

আপনি যদি কোনও ধারক শুরু করেন তবে আপনি যদি আগে এই ধারকটি বন্ধ করে দেন । আপনি যদি কোনও চিত্রের কাছে রান ব্যবহার করেন তবে আপনি যদি ইলির এই চিত্রটির একটি ধারক সরিয়ে ফেলেছিলেন । এটি আমার মনে হয় এটির প্রাথমিক ব্যবহার।
কোডস্লেভ

উত্তর:


349

এটি একটি খুব গুরুত্বপূর্ণ প্রশ্ন এবং উত্তরটি খুব সহজ, তবে মৌলিক:

  1. চালান: একটি চিত্রের একটি নতুন ধারক তৈরি করুন, এবং ধারকটি কার্যকর করুন। আপনি একই চিত্রের এন ক্লোন তৈরি করতে পারেন। কমান্ডটি: docker run IMAGE_ID এবং না docker run CONTAINER_ID

এখানে চিত্র বর্ণনা লিখুন

  1. শুরু: আগে থামানো একটি ধারক চালু করুন। উদাহরণস্বরূপ, আপনি যদি কমান্ড দিয়ে কোনও ডাটাবেস বন্ধ করে দিয়েছিলেন docker stop CONTAINER_ID, আপনি একই ধারকটি কমান্ডের সাথে পুনরায় চালু করতে পারেন docker start CONTAINER_IDএবং ডেটা এবং সেটিংস একই হবে।

এখানে চিত্র বর্ণনা লিখুন


1
ডেটা অব্যাহত রাখার জন্য কি থামানো ধারকটির জন্য একটি ভলিউম তৈরি করা দরকার?
লোগান ফিলিপস

@ লোগানফিলিপস কনটেইনার এর ডিফল্ট ইউনিয়ন ফাইল সিস্টেম লেয়ারে লেখা ফাইল এবং ভলিউমে লেখা ফাইলগুলির মধ্যে পার্থক্য: কনটেইনারটি অপসারণ করার সময় কন্টেইনার ইউনিয়ন ফাইল সিস্টেম লেটার ডেটা সর্বদা নষ্ট হয়ে যায় docker rm container_id। অন্যদিকে, -vকমান্ড লাইনে অপশনটি স্পষ্টভাবে সরবরাহ না করা হলে ভলিউম ডেটা কনটেইনার অপসারণে বেঁচে থাকবে । হোস্ট সিস্টেমে ভলিউম অবস্থানটি সরাসরি পরিদর্শন করা যেতে পারে। এই নিবন্ধটি দেখুন
স্টাফেন

প্রক্রিয়া সম্পর্কে, কমান্ড লাইনের & শেষে প্রয়োজন run? আমার এটি গণনার (24 ঘন্টা) পরিষেবা হিসাবে দরকার
পিটার ক্রাউস

তাহলে "ডকার ক্রিয়েট" এর উদ্দেশ্য কী? কিভাবে / কখন ব্যবহার করা হবে?
জোসেফ গাগনন

99
  • runএকটি ইমেজ চালায়
  • startএকটি পাত্রে শুরু ।

docker runডক উল্লেখ করেন নাই:

docker runকমান্ড প্রথম সৃষ্টি নিদিষ্ট চিত্রের উপর একটি লেখার যোগ্য ধারক স্তর, এবং তারপর শুরু হয় নিদিষ্ট কমান্ড ব্যবহার করে এটি।

অর্থাৎ ডকার রান/containers/create তখনকার এপিআই এর সমান /containers/(id)/start

আপনি কোনও বিদ্যমান ধারক চালাচ্ছেন না, আপনি এটিতে ডেকার করেন (যেহেতু ডকার 1.3)
আপনি একটি প্রস্থানিত ধারক পুনরায় আরম্ভ করতে পারেন ।


@ তারিক একটি ইন্টারেক্টিভ প্রক্রিয়া জন্য আপনি যোগ -iকরতে হবে না docker run? আমি বোঝাতে চাইছি, একটি ধারক চালানোর জন্য ডকার রানের একটি চিত্র দরকার।
ভোনসি

10
আরও বিস্তৃত প্রতিক্রিয়া লেখার জন্য কারও কাছে একটি ঘর আছে বলে মনে হচ্ছে। উত্তরটি খুব ব্যাখ্যামূলক বলে মনে হচ্ছে না।
কুর্তাল

4
আমার জন্য পরের প্রশ্ন কি-পার্থক্য-মধ্যে-এ-ধারক-এবং-একটি-চিত্র ছিল stackoverflow.com/questions/21498832/...
অ্যালেক্স Punnen

18

একটি উদাহরণ সহ ব্যাখ্যা:

আপনার কম্পিউটারে একটি গেম (আইসো) চিত্র রয়েছে তা বিবেচনা করুন।

যখন তুমি run (ভার্চুয়াল ড্রাইভ হিসাবে আপনার চিত্রটি মাউন্ট করবেন), ভার্চুয়াল ড্রাইভের সমস্ত গেমের সামগ্রী সহ ভার্চুয়াল ড্রাইভ তৈরি হয় এবং গেম ইনস্টলেশন ফাইলটি স্বয়ংক্রিয়ভাবে চালু হয়। [আপনার ডকার ইমেজ চালানো - একটি ধারক তৈরি এবং তারপরে এটি শুরু করুন]]

আপনি যখন এটি stop(ডকার থামার অনুরূপ) করেন তখন ভার্চুয়াল ড্রাইভটি এখনও উপস্থিত থাকে তবে সমস্ত প্রক্রিয়া বন্ধ করে দেয়। [কনটেইনারটি মুছে ফেলা না হওয়া পর্যন্ত বিদ্যমান]

এবং যখন আপনি করেন start(ডকার শুরু করার মতো), ভার্চুয়াল ড্রাইভ থেকে গেমস ফাইলগুলি এর প্রয়োগ শুরু করে। [বিদ্যমান ধারক শুরু]

এই উদাহরণে - গেমের চিত্রটি আপনার ডকার চিত্র এবং ভার্চুয়াল ড্রাইভটি আপনার ধারক।


8

daniele3004 এর উত্তর ইতিমধ্যে বেশ ভাল।

শুধু একটি দ্রুত এবং ময়লা আমার মত মানুষ যারা আপ দ্রবণ জন্য সূত্র runএবং startসময়ে সময়ে:

docker run [...]= docker pull [...]+docker start [...]


2
এটি বেশ সত্য নয়। সরকারী ডক মতে, "...docker run is equivalent to the API /containers/create then /containers/(id)/start.(সূত্র: docs.docker.com/engine/reference/commandline/run )
sshh

2

runকমান্ড চিত্র থেকে একটি ধারক তৈরি করে এবং তারপরে এই ধারকটিতে মূল প্রক্রিয়া শুরু করে। run --rmপতাকা সহ এটি চালানো আপনাকে পরে অকেজো মরা পাত্রে অপসারণের ঝামেলা বাঁচিয়ে দেবে এবং আপনাকে অস্তিত্ব docker startএবং docker removeসম্পূর্ণরূপে উপেক্ষা করার অনুমতি দেবে ।

এখানে চিত্র বর্ণনা লিখুন

run কমান্ড কয়েকটি ভিন্ন কাজ করে:

docker run --name dname image_name bash -c "whoami"
  1. চিত্র থেকে একটি ধারক তৈরি করে। এই মুহুর্তে ধারকটির একটি আইডি থাকবে, কোনও নাম দেওয়া থাকলে একটি নাম থাকতে পারে, এতে প্রদর্শিত হবেdocker ps
  2. ধারকটির মূল প্রক্রিয়া শুরু / সম্পাদন করে। উপরের কোডে যে কার্যকর করা হবে bash -c "whoami"। যদি কেউ docker run --name dname image_nameকমান্ডার চালানোর আদেশ না দিয়ে রান করে তবে তা অবিলম্বে বন্ধ হয়ে যাবে into
  3. রুট প্রক্রিয়া শেষ হয়ে গেলে, ধারকটি বন্ধ হয়ে যায়। এই মুহুর্তে, এটি বেশ অনেকটা অকেজো। একজন আর কিছু চালাতে বা ধারকটিকে পুনরুত্থিত করতে পারে না। থামার স্থিতির বাইরে মূলত 2 টি উপায় রয়েছে: অন্য কিছু চালানোর জন্য কন্টেইনারটি সরিয়ে ফেলুন বা থামানো ধারকটির বাইরে একটি চেকপয়েন্ট তৈরি করুন (অর্থাত্ একটি চিত্র)। docker removeএকই নামে কন্টেইনার চালু করার আগে একজনকে চালাতে হবে ।

একবার স্বয়ংক্রিয়ভাবে বন্ধ হয়ে গেলে ধারকটি কীভাবে সরিয়ে ফেলা যায়? কমান্ডেএকটি--rmপতাকা যুক্তকরুনrun:

docker run --rm --name dname image_name bash -c "whoami"

কীভাবে একক পাত্রে একাধিক কমান্ড কার্যকর করা যায়? সেই মূল প্রক্রিয়াটি মারা যাওয়া থেকে রক্ষা করে। --detachedপতাকাসহ শুরুতে কিছু অকেজো কমান্ড চালিয়েএবং তারপরে প্রকৃত কমান্ডগুলি চালানোর জন্য "এক্সিকিউট" ব্যবহার করেএটি করা যেতে পারে:

docker run --rm -d --name dname image_name tail -f /dev/null
docker exec dname bash -c "whoami"
docker exec dname bash -c "echo 'Nnice'"

আমাদের তখন কেন দরকার docker stop? এই দীর্ঘস্থায়ী ধারক যে আমরা অবিরাম আদেশের সঙ্গে পূর্ববর্তী স্নিপেট সালে চালু বন্ধ করতেtail -f /dev/null

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.