डॉकटर - कंटेनर और गोले

डिफ़ॉल्ट रूप से, जब आप एक कंटेनर लॉन्च करते हैं, तो आप भी एक का उपयोग करेंगे shell commandकंटेनर को लॉन्च करते समय जैसा कि नीचे दिखाया गया है। यह हमने पहले के अध्यायों में देखा है जब हम कंटेनरों के साथ काम कर रहे थे।

उपरोक्त स्क्रीनशॉट में, आप देख सकते हैं कि हमने निम्नलिखित कमांड जारी की है -

sudo docker run –it centos /bin/bash

हमने एक नया कंटेनर बनाने के लिए इस कमांड का उपयोग किया और फिर कंटेनर से बाहर निकलने के लिए Ctrl + P + Q कमांड का उपयोग किया। यह सुनिश्चित करता है कि कंटेनर से बाहर निकलने के बाद भी कंटेनर मौजूद है।

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

अब कंटेनरों को संलग्न करने और उन्हें नष्ट करने की आवश्यकता के बिना सफाई से बाहर निकलने का एक आसान तरीका है। इसे प्राप्त करने का एक तरीका है, का उपयोग करकेnsenter आदेश।

इससे पहले कि हम दौड़ें nsenter कमांड, आपको पहले स्थापित करना होगा nsenterछवि। यह निम्नलिखित कमांड का उपयोग करके किया जा सकता है -

docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

इससे पहले कि हम उपयोग करें nsenter कमांड, हमें कंटेनर की प्रोसेस आईडी प्राप्त करने की आवश्यकता है, क्योंकि इसके लिए यह आवश्यक है nsenterआदेश। हम डॉकर के जरिए प्रोसेस आईडी प्राप्त कर सकते हैंinspect command और इसे छानकर Pid

जैसा कि ऊपर स्क्रीनशॉट में देखा गया है, हमने सबसे पहले इसका इस्तेमाल किया है docker psरनिंग कंटेनर को देखने के लिए कमांड। हम देख सकते हैं कि ef42a4c5e663 की आईडी के साथ एक रनिंग कंटेनर है।

हम फिर डॉकटर का उपयोग करते हैं inspect इस कंटेनर के कॉन्फ़िगरेशन का निरीक्षण करने के लिए कमांड और फिर उपयोग करें grepप्रक्रिया ID को फ़िल्टर करने के लिए कमांड। और आउटपुट से, हम देख सकते हैं कि प्रोसेस आईडी 2978 है।

अब जब हमारे पास प्रक्रिया आईडी है, हम आगे बढ़ सकते हैं और उपयोग कर सकते हैं nsenter Docker कंटेनर को संलग्न करने के लिए कमांड।

nsenter

यह विधि एक कंटेनर से बाहर निकलने के बिना एक कंटेनर को संलग्न करने की अनुमति देती है।

वाक्य - विन्यास

nsenter –m –u –n –p –i –t containerID कमांड

विकल्प

  • -u का उल्लेख करने के लिए प्रयोग किया जाता है Uts namespace

  • -m का उल्लेख करने के लिए प्रयोग किया जाता है mount namespace

  • -n का उल्लेख करने के लिए प्रयोग किया जाता है network namespace

  • -p का उल्लेख करने के लिए प्रयोग किया जाता है process namespace

  • -i इंटरैक्टिव मोड में कंटेनर को चलाने के लिए है।

  • -t कंटेनर के I / O स्ट्रीम को होस्ट OS से कनेक्ट करने के लिए उपयोग किया जाता है।

  • containerID - यह कंटेनर की आईडी है।

  • Command - यह कंटेनर के भीतर चलने का कमांड है।

प्रतिलाभ की मात्रा

कोई नहीं

उदाहरण

sudo nsenter –m –u –n –p –i –t 2978 /bin/bash

उत्पादन

आउटपुट से, हम निम्नलिखित बातों का पालन कर सकते हैं -

  • शीघ्र परिवर्तन होता है bash shell सीधे जब हम जारी करते हैं nsenter आदेश।

  • हम तो जारी करते हैं exitआदेश। अब आम तौर पर अगर आप का उपयोग नहीं कियाnsenterआदेश, कंटेनर नष्ट हो जाएगा। लेकिन आपको ध्यान होगा कि जब हम दौड़ते हैंnsenter आदेश, कंटेनर अभी भी ऊपर और चल रहा है।