कैसे एक बंद docker कंटेनर को पुनरारंभ करें


91

मैं निम्नलिखित कमांड के साथ छवि से एक डॉकटर कंटेनर लॉन्च करता हूं:

$ docker run -d myimage /bin/bash -c "mycommand"

जब "mycommand"समाप्त हो जाता है, तो कंटेनर बंद कर दिया जाता है (मुझे लगता है कि इसे रोक दिया गया है), लेकिन इसे हटाया नहीं गया है, क्योंकि मैं इसे इस लिंक के साथ देख सकता हूं:

$ docker ps -a

क्या restartइस कंटेनर में समान मापदंडों के साथ कोई डेटा मौजूद है और इससे उत्पन्न डेटा है mycommand?


क्या "वॉल्यूम" या "एक मेजबान निर्देशिका को बढ़ाना" आपको संतुष्ट करता है? जैसे डॉक्टर ने उल्लेख किया है: docs.docker.com/engine/tutorials/dockervolumes
झांग

जवाबों:


124

हां, जब प्रारंभिक कमांड अपना निष्पादन समाप्त करता है तब कंटेनर बंद हो जाता है।

आप एक रुके हुए कंटेनर का उपयोग शुरू कर सकते हैं:

docker start container_name

यदि आप अपने कमांड का आउटपुट देखना चाहते हैं तो आपको -aiविकल्प जोड़ने चाहिए :

docker start -ai container_name

पुनश्च। वहाँ है, docker restart container_nameलेकिन एक चल रहे कंटेनर को पुनरारंभ करने के लिए उपयोग किया जाता है - मुझे विश्वास है कि आपका मामला नहीं है।


1
मेरा कंटेनर शुरू होने के तुरंत बाद बंद हो जाता है, हर बार। निश्चित नहीं है कि उस का क्या मतलब है। खुला आवश्यकताओं फ़ाइल नहीं किया जा सका: -ai आदेश देता है इस प्रतिक्रिया का उपयोग करते हुए [errno 2] ऐसा कोई फ़ाइल या निर्देशिका: 'requirements.txt'
geoidesic

@geoidesic क्या आप अधिक जानकारी प्रदान कर सकते हैं? आप किस तरह की 'आवश्यकताएँ.टेक्स्ट ’फाइल पर बात कर रहे हैं?
lmtx

1
@geoidesic, इसका निवारण करने के लिए, मैंने केवल 900 स्लीप कमांड चलाने के लिए एंट्रीपॉइंट को बदल दिया, जिसने मुझे कंटेनर से कनेक्ट करने और उपयोग करने के भीतर कमांड चलाने की अनुमति दी docker exec -it container_name bash। जब मैंने कंटेनर के अंदर से कमांड चलाया तो मैं देख सकता था कि मेरी स्क्रिप्ट का प्रारंभिक कार्यान्वयन क्यों विफल हो रहा था और मैंने इसे ठीक कर दिया।
पाट्स

@PatS क्या आप कृपया साझा कर सकते हैं कि आपने किस तरह से मिलाया startहै sleep? मैं एक बिंदु पर जाने में असमर्थ हूं जहां मैं दौड़ सकता हूंexec
3pitt

11

सबसे पहले, $ docker ps -aसभी कंटेनरों (जो चल रहे हैं और रुके हुए हैं) को दिखाता है, यही कारण है कि आप अपने रुके हुए कंटेनर को सूचीबद्ध नहीं देख रहे हैं।

दूसरा, आप आसानी से एक रुका हुआ कंटेनर चालू कर सकते हैं:

$ docker start container_name

एक बार कंटेनर चालू हो जाने के बाद, आप अपनी कमांड चला सकते हैं:

$ docker exec -it container_name bash -c "mycommand"

आपके कंटेनर में आपके द्वारा बनाया गया सामान तब तक आपके कंटेनर के अंदर रहेगा। यदि आप अपने कंटेनर को हटाकर भी डेटा रखना चाहते हैं तो आप वॉल्यूम का उपयोग कर सकते हैं ।


1

यह होना चाहिए

$ docker restart container_id # OR
$ docker restart container_name

स्वीकृत उत्तर बिंदु restartपहले से चल रहे कंटेनर के लिए है
3pitt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.