/ / खोल स्क्रिप्ट निष्पादन पूर्ण होने के बाद डॉकर कंटेनर में दर्ज करें - डॉकर, डॉकरफ़ाइल, डॉकर-मशीन

शेल स्क्रिप्ट निष्पादन पूर्ण होने के बाद डॉकर कंटेनर में दर्ज करें - डॉकर, डॉकरफ़ाइल, डॉकर-मशीन

यदि मैं एक शेल स्क्रिप्ट को ENTRYPOINT के रूप में निष्पादित करना चाहता हूं और शेल स्क्रिप्ट निष्पादन पूर्ण होने पर डॉकर कंटेनर में प्रवेश करना चाहता हूं।

मेरे डॉकरफाइल के अंत में निम्नलिखित पंक्तियां हैं:

WORKDIR artifacts
ENTRYPOINT ./my_shell.sh

जब मैं इसे निम्न आदेश के साथ चलाता हूं, तो यह शेल स्क्रिप्ट निष्पादित करता है लेकिन डॉकर कंटेनर में प्रवेश नहीं करता है।

docker run -it testub /bin/bash

क्या कोई मुझे यहां बता सकता है अगर मुझे यहां कुछ याद आ रहा है?

उत्तर:

जवाब के लिए 0 № 1

दो विकल्प हैं जो नियंत्रित करते समय कंटेनर चलाता है, एंट्रीपॉइंट (ENTRYPOINT) और आदेश (CMD)। वे निम्नलिखित तर्क का पालन करते हैं:

  • यदि प्रविष्टि बिंदु परिभाषित किया गया है, तो यह अतिरिक्त तर्क के रूप में शामिल कमांड के मान के साथ चलाया जाता है।
  • यदि प्रविष्टि बिंदु परिभाषित नहीं किया गया है, तो आदेश स्वयं ही चलाया जाता है।

आप छवि में परिभाषित एक या दोनों मानों को ओवरराइड कर सकते हैं। docker run -it --entrypoint /bin/sh testub इसके बदले / bin / sh चलाएगा ./my_shell.sh, प्रवेश बिंदु ओवरराइडिंग। तथा docker run -it testub /bin/bash कंटेनर शुरू करने के साथ, आदेश को ओवरराइड करेगा ./my_shell.sh /bin/bash.

त्वरित जवाब चलाने के लिए है docker run -it --entrypoint /bin/bash testub और वहां से, अपना लात मारो ./my_shell.sh। अद्यतन करने के लिए एक बेहतर समाधान है ./my_shell.sh किसी भी अतिरिक्त पैरामीटर की जांच करने के लिए और स्क्रिप्ट के अंत में निम्नलिखित के साथ उन्हें चलाने के लिए:

if [ $# -gt 0 ]; then
exec "$@"
fi