मान लें कि एक डॉकर कंटेनर 'डॉकर रन' के साथ चलाया गया है और फिर 'डॉकर स्टॉप' के साथ रुक गया है। 'डॉकर स्टार्ट' के बाद 'सीएमडी' कमांड को निष्पादित किया जाएगा?क्या 'डॉकर स्टार्ट' सीएमडी कमांड निष्पादित करता है?
उत्तर
मेरा मानना है कि @jripoll गलत है, यह आदेश है कि docker start
पर docker run
साथ पहली बार चलाने था भी चलाने के लिए प्रकट होता है।
यहां परीक्षण का एक सरल उदाहरण है:
पहले एक खोल स्क्रिप्ट बनाने tmp.sh
बुलाया चलाने के लिए:
echo "hello yo!"
तब चलाएँ:
docker run --name yo -v "$(pwd)":/usr/src/myapp -w /usr/src/myapp ubuntu sh tmp.sh
कि hello yo!
प्रिंट होगा।
अब यह फिर से शुरू:
docker start -ia yo
यह इसे फिर से हर बार जब आप कि चलाने के प्रिंट होगा।
नहीं, सीएमडी कमांड केवल तभी निष्पादित होता है जब आप किसी छवि में स्थित कंटेनर चलाने के लिए 'डॉकर रन' निष्पादित करते हैं।
प्रलेखन में: जब खोल या कार्यकारी स्वरूपों में इस्तेमाल किया, अध्यक्ष एवं प्रबंध निदेशक अनुदेश सेट किए जाने पर छवि चल कमांड निष्पादित किया जाना है।
जब आप एक डोकर शुरू करते हैं, आप api/client/start.go
फोन है, जो कहता है:
cli.client.ContainerStart(containerID)
engine-api/client/container_start.go
कॉल यही कारण है कि:
cli.post("/containers/"+containerID+"/start", nil, nil, nil)
डोकर डेमॉन प्रक्रिया है कि daemon/start.go
में API कॉल:
container.StartMonitor(daemon, container.HostConfig.RestartPolicy)
कंटेनर मॉनिटर 012 में कंटेनर चलाता है:
m.supervisor.Run(m.container, pipes, m.callback)
डिफ़ॉल्ट रूप से, डोकर डेमॉन पर्यवेक्षक यहां, daemon/daemon.go में है:
daemon.execDriver.Run(c.Command, pipes, hooks)
और execDriver daemon/execdriver/windows/exec.go
में कमांड लाइन बनाता है:
createProcessParms.CommandLine, err = createCommandLine(processConfig, false)
कि का उपयोग करता है processConfig.Entrypoint
औरprocessConfig.Arguments
daemon/execdriver/windows/commandlinebuilder.go
में : c.Args
जा रहा है एक कंटेनर के तर्कों (runtile पैरामीटर या CMD
)
तो हाँ, 'CMD
के आदेशों का कर रहे हैं के साथ
processConfig := execdriver.ProcessConfig{
CommonProcessConfig: execdriver.CommonProcessConfig{
Entrypoint: c.Path,
Arguments: c.Args,
Tty: c.Config.Tty,
},
,:
// Build the command line of the process
commandLine = processConfig.Entrypoint
logrus.Debugf("Entrypoint: %s", processConfig.Entrypoint)
for _, arg := range processConfig.Arguments {
logrus.Debugf("appending %s", arg)
if !alreadyEscaped {
arg = syscall.EscapeArg(arg)
}
commandLine += " " + arg
}
उन ProcessConfig.Arguments
daemon/container_operations_windows.go
में भर जाती है 'docker start
' के बाद निष्पादित किया गया।
यदि आप अपने कंटेनर को हर बार एक ही निष्पादन योग्य चलाने के लिए चाहते हैं, तो आपको ENTRYPOINT
CMD
के साथ संयोजन में उपयोग करना चाहिए।
नोट: RUN
CMD
के साथ भ्रमित न करें। रन वास्तव में एक आदेश चलाता है और परिणाम देता है; CMD
बिल्ड समय पर कुछ भी निष्पादित नहीं करता है, लेकिन छवि के लिए इच्छित आदेश निर्दिष्ट करता है।
- 1. सी ++ निष्पादन सीएमडी कमांड
- 2. डॉकर: एंट्रीपॉइंट और सीएमडी निर्देशों को समझना
- 3. आर सीएमडी स्वीवे - पीडीएफ क्या करता है?
- 4. नोड-वेबकिट बाहरी कमांड निष्पादित करता है?
- 5. -आई झंडा डॉकर में क्या करता है?
- 6. एक "स्टार्ट ..." वॉइस कमांड
- 7. "डॉकर फ़ाइल में सीएमडी ['/home/user/script.sh']" डॉकर-कंपोज़
- 8. डॉकर क्विकस्टार्ट टर्मिनल क्या करता है?
- 9. सीएमडी स्क्रिप्ट: सीएमडी
- 10. एंटोकॉइंट परिवर्तनीय विस्तार और सीएमडी पैरामीटर के साथ डॉकर कंटेनर
- 11. डॉकर निष्पादन के साथ दो कमांड निष्पादित करें
- 12. सीएमडी
- 13. प्रक्रिया। स्टार्ट() कमांड प्रॉम्प्ट विंडो
- 14. सीएमडी
- 15. विंडोज सीएमडी
- 16. 'निर्यात' कमांड क्या करता है?
- 17. डॉकर-कंपोज़ कमांड
- 18. डॉकर बिल्ड कमांड
- 19. सीएमडी
- 20. क्या सीएमडी लाइन या जीयूआई
- 21. सीएमडी
- 22. डॉकर कंटेनर बंदरगाहों का पर्दाफाश नहीं करता है जब डॉकर रन कमांड
- 23. मैं सी # कंसोल एप्लिकेशन में सीएमडी कमांड कैसे निष्पादित कर सकता हूं?
- 24. बाहरी कमांड निष्पादित करें
- 25. डॉकरफ़ाइल सीएमडी
- 26. डॉकर रन कमांड सफल होने पर यह डॉकर-कंपोज़ कमांड विफल क्यों होता है?
- 27. विंडोज सीएमडी
- 28. सीएमडी/सी का क्या अर्थ है?
- 29. डॉकर सेवा और डॉकर कंटेनर के बीच क्या अंतर है?
- 30. निष्पादित MySQL कमांड लाइन
चेक इस सवाल: (http://stackoverflow.com/q/21553353/4677231) समझने के लिए महान 'CMD',' ENTRYPOINT [सीएमडी और ENTRYPOINT एक Dockerfile में क्या अंतर है?] ' – sEpmein