एक कंटेनर शुरू करने के लिए मैं करता हूं:
docker run a8asd8f9asdf0
यदि यह मामला है, क्या करता है:
docker start
करना?
मैनुअल में यह कहता है
एक या एक से अधिक बंद कंटेनर शुरू करें
execute
?
एक कंटेनर शुरू करने के लिए मैं करता हूं:
docker run a8asd8f9asdf0
यदि यह मामला है, क्या करता है:
docker start
करना?
मैनुअल में यह कहता है
एक या एक से अधिक बंद कंटेनर शुरू करें
execute
?
जवाबों:
यह एक बहुत ही महत्वपूर्ण प्रश्न है और इसका उत्तर बहुत ही सरल है, लेकिन मौलिक है:
docker run IMAGE_ID
और नहीं docker run CONTAINER_ID
docker stop CONTAINER_ID
साथ उसी कंटेनर को पुनः लोड कर सकते हैं docker start CONTAINER_ID
, और डेटा और सेटिंग्स समान होंगे।docker rm container_id
। दूसरी ओर, वॉल्यूम डेटा कंटेनर के निष्कासन से बचता है जब तक कि -v
विकल्प लाइन पर स्पष्ट रूप से आपूर्ति नहीं की जाती है। होस्ट सिस्टम पर वॉल्यूम लोकेशन का सीधे निरीक्षण किया जा सकता है। इस लेख को देखें
&
में, run
कमांड लाइन के अंत में आवश्यकता है ? मुझे इसकी आवश्यकता एक काउंटिनस (24 घंटे) सेवा के रूप में है
run
एक छवि चलाता हैstart
एक कंटेनर शुरू होता है ।docker run
दस्तावेज़ उल्लेख करता है:
docker run
आदेश पहले बनाता निर्दिष्ट छवि पर राईट योग्य कंटेनर परत, और फिर शुरू होता है निर्दिष्ट आदेश का उपयोग यह।यही कारण है कि डोकर, है रन एपीआई के बराबर है
/containers/create
तो/containers/(id)/start
।
आप एक मौजूदा कंटेनर नहीं चलाते हैं, आप इसे निष्पादित करते हैं (docker 1.3 के बाद से) ।
आप एक बाहर किए गए कंटेनर को पुनरारंभ कर सकते हैं ।
-i
लिए docker run
एक इंटरैक्टिव प्रक्रिया के लिए? मेरा मतलब है, डॉकटर को कंटेनर चलाने के लिए एक छवि की आवश्यकता होती है।
एक उदाहरण के साथ स्पष्टीकरण:
विचार करें कि आपके कंप्यूटर में एक गेम (आईएसओ) छवि है।
जब आप run
(अपनी छवि को वर्चुअल ड्राइव के रूप में माउंट करते हैं), वर्चुअल ड्राइव में सभी गेम सामग्री के साथ एक वर्चुअल ड्राइव बनाई जाती है और गेम इंस्टॉलेशन फ़ाइल स्वचालित रूप से लॉन्च हो जाती है। [अपनी डॉकटर छवि चलाना - एक कंटेनर बनाना और फिर उसे शुरू करना।]
लेकिन जब आप stop
(डॉकटर के समान) इसे रोकते हैं, तो वर्चुअल ड्राइव अभी भी मौजूद है लेकिन सभी प्रक्रियाओं को रोकती है। [जब तक कंटेनर मौजूद नहीं है, तब तक इसे हटाया नहीं जाता]
और जब आप करते हैं start
(docker start के समान), वर्चुअल ड्राइव से गेम फाइल्स इसके निष्पादन को शुरू करती हैं। [मौजूदा कंटेनर शुरू करना]
इस उदाहरण में - खेल की छवि आपकी डॉकटर छवि है और वर्चुअल ड्राइव आपका कंटेनर है।
daniele3004 का जवाब पहले से ही बहुत अच्छा है।
बस एक त्वरित और गंदी मेरे जैसे लोग हैं, जो ऊपर मिक्स के लिए सूत्र run
और start
समय-समय पर:
docker run [...]
= docker pull [...]
+docker start [...]
"...docker run is equivalent to the API /containers/create then /containers/(id)/start.
(स्रोत: docs.docker.com/engine/reference/commandline/run )
run
कमांड छवि से एक कंटेनर बनाता है और फिर इस कंटेनर पर रूट प्रक्रिया शुरू करता है। साथ यह चल रहा है run --rm
झंडा आप बेकार मृत कंटेनर बाद में दूर करने की मुसीबत बचत होगी और आप के अस्तित्व की अनदेखी करने की अनुमति होगी docker start
और docker remove
कुल मिलाकर।
run
कमांड कुछ अलग काम करता है:
docker run --name dname image_name bash -c "whoami"
docker ps
bash -c "whoami"
। अगर एक चलता हैdocker run --name dname image_name
कंटेनर चलाने के आदेश के बिना कोई तुरंत रोका हुआ राज्य चला जाएगा।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
।