मैं चाहता हूँ समाप्त:कैसे एक स्क्रिप्ट निष्पादित करने के लिए जब मैं अपने कंसोल पर टाइप जब मैं एक डोकर कंटेनर
docker ^a docker container^ stop
समाप्त करने से पहले एक स्क्रिप्ट को निष्पादित करने के लिए। क्या यह संभव है?
मैं चाहता हूँ समाप्त:कैसे एक स्क्रिप्ट निष्पादित करने के लिए जब मैं अपने कंसोल पर टाइप जब मैं एक डोकर कंटेनर
docker ^a docker container^ stop
समाप्त करने से पहले एक स्क्रिप्ट को निष्पादित करने के लिए। क्या यह संभव है?
डॉकर स्टॉप कमांड कंटेनर में रूट प्रक्रिया (पीआईडी 1) में सिगरेट सिग्नल भेजकर पहले चलने वाले कंटेनर को रोकने का प्रयास करता है। यदि समय समाप्ति अवधि के भीतर प्रक्रिया समाप्त नहीं हुई है तो सिग्कील सिग्नल भेजा जाएगा।
अभ्यास में, इसका मतलब है कि आप एक ENTRYPOINT स्क्रिप्ट, जो रोकना होगा (जाल) SIGTERM संकेत को परिभाषित करने और उचित रूप में किसी भी बंद तर्क निष्पादित करने के लिए है।
एक नमूना entrypoint स्क्रिप्ट कुछ इस तरह देख सकते हैं:
#!/bin/bash
#Define cleanup procedure
cleanup() {
echo "Container stopped, performing cleanup..."
}
#Trap SIGTERM
trap 'cleanup' SIGTERM
#Execute a command
"${@}" &
#Wait
wait $!
,
नोट (करने के लिए इंतजार खोल संकेत हैंडलिंग, सम्मान के साथ, अधिक जानकारी के here थोड़ा से समझाया गया है) के साथ कि उपरोक्त प्रविष्टि बिंदु, क्लीनअप तर्क केवल तभी निष्पादित किया जाएगा जब कंटेनर स्पष्ट रूप से बंद हो जाता है, अगर आप यह भी करना चाहते हैं कि अंतर्निहित प्रक्रिया/आदेश स्वयं (या विफल हो जाता है), तो आप इसे निम्नानुसार पुन: व्यवस्थित कर सकते हैं।
...
#Trap SIGTERM
trap 'true' SIGTERM
#Execute command
"${@}" &
#Wait
wait $!
#Cleanup
cleanup
ध्यान दें कि ENTRYPOINTmust _exec form_ में होना चाहिए PID 1: ENTRYPOINT ["निष्पादन योग्य", "param1", "param2"] [docs] (https://docs.docker.com/engine/reference/builder /#प्रवेश बिंदु) – Linuslabo
क्या आप स्क्रिप्ट को कंटेनर के अंदर या होस्ट पर कंटेनर के बाहर निष्पादित करना चाहते हैं? कंटेनर के अंदर – R0MANARMY
। –