2016-06-04 4 views
5

मैं एक अन्य छवि से एक छवि बना रहा हूं जो एक विशिष्ट प्रविष्टि सेट करता है। हालांकि मैं चाहता हूं कि मेरी छवि डिफ़ॉल्ट हो। मैं एंटरपॉइंट को रीसेट कैसे करूं?डिफ़ॉल्ट डॉकर एंट्रीपॉइंट

मैंने कोशिश की निम्नलिखित Dockerfile:

FROM some-image 
ENTRYPOINT ["/bin/sh", "-c"] 

दुर्भाग्य से यह डिफ़ॉल्ट entrypoint तरह काम नहीं करता यह आदेश उद्धृत करने की आवश्यकता के रूप में।

docker run myimage ls -l/ # "-l /" arguments are ignored 
file1 file2 file3    # files in current working directory 

docker run myimage "ls -l /" # works correctly 

मैं बिना उद्धरण के आदेशों का उपयोग कैसे करूं?

+0

एंट्रीपॉइंट '$ डॉकर रन --help को रीसेट करने में सहायता देखें। grep entrypoint' दिखाता है '--entrypoint छवि के डिफ़ॉल्ट ENTRYPOINT को ओवरराइट करें ' – user2915097

+0

मुझे इसे डॉकरफ़ाइल में करने की आवश्यकता है –

उत्तर

18

एक मौजूदा ENTRYPOINT अक्षम करने के लिए, अपने डोकर फ़ाइल

ENTRYPOINT [] 

में एक खाली सरणी सेट तो docker run करने के लिए अपने तर्क के रूप में सामान्य exec होगा।

आपके ENTRYPOINT ["/bin/sh", "-c"] के कारण उद्धृत तारों की आवश्यकता है कि उद्धरण के बिना, ls पर तर्क sh पर दिए जा रहे हैं।

तर्क की बहुत सारी में गैर उद्धृत परिणाम sh

"/bin/sh", "-c", "ls", "-l", "/" 

को भेजा जा रहा हवाला देते हुए अनुमति देता है पूरा आदेश (sh -c) एक तर्क के रूप में sh को पारित किया जाना है।

"/bin/sh", "-c", "ls -l /"