एक कंटेनर शुरू करने के लिए मैं करता हूं:
docker run a8asd8f9asdf0
यदि यह मामला है, क्या करता है:
docker start
करना?
मैनुअल में यह कहता है
एक या एक से अधिक बंद कंटेनर शुरू करें
execute?
एक कंटेनर शुरू करने के लिए मैं करता हूं:
docker run a8asd8f9asdf0
यदि यह मामला है, क्या करता है:
docker start
करना?
मैनुअल में यह कहता है
एक या एक से अधिक बंद कंटेनर शुरू करें
execute?
जवाबों:
यह एक बहुत ही महत्वपूर्ण प्रश्न है और इसका उत्तर बहुत ही सरल है, लेकिन मौलिक है:
docker run IMAGE_ID और नहीं docker run CONTAINER_IDdocker 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 psbash -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।