Computer >> कंप्यूटर >  >> सॉफ्टवेयर >> आभासी मशीन

डॉकर कंटेनर नेटवर्किंग - ट्यूटोरियल

डॉकर के चमत्कारों को और जानने का समय आ गया है। हमारे पास अब तक दो ट्यूटोरियल हैं, एक पूरी तरह से परिचय पर केंद्रित है, जहां हमने तकनीक के बारे में सब कुछ सीखा, सेवाओं को कैसे चलाना है और बंदरगाहों को कैसे दिखाना है, डॉकरफाइल्स के साथ छवियों को कैसे कमिट और बनाना है, और कुछ अन्य तरकीबें। तब हमने स्क्रिप्ट और सिस्टमड के विकल्प के रूप में पर्यवेक्षक का उपयोग किया।

आज हम नेटवर्किंग के बारे में जानेंगे। हम अपने कंटेनरों से कैसे जुड़ सकते हैं, कैसे हम होस्ट को स्पॉन्डेड इंस्टेंसेस से एक्सेस कर सकते हैं, और सबसे महत्वपूर्ण बात यह है कि बिना टोपोलॉजी के बारे में कुछ भी जाने बिना एक कंटेनर से दूसरे कंटेनर में कैसे कनेक्ट किया जाए। यह दिलचस्प होना चाहिए। पिछली दो गाइडों की तरह, हम भी कदम दर कदम आगे बढ़ेंगे और सब कुछ विस्तार से समझाएंगे। मेरे बाद।


सामग्री तालिका

  1. सेटअप
  2. कंटेनर नेटवर्किंग के लिए होस्ट <ओल>
  3. सारांश
  4. नेटवर्किंग को होस्ट करने के लिए कंटेनर
  5. कंटेनर से कंटेनर नेटवर्किंग
  6. कंटेनर लिंक! <ओल>
  7. होस्ट फ़ाइल
  8. सर्वर से कनेक्ट करें, उसके नाम का उपयोग करते हुए
  9. और पढ़ना
  10. निष्कर्ष

  11. सेटअप

    आइए पहले कई कंटेनर बनाएं। हमारे पास पहले से ही पिछले परीक्षण से हमारे चित्र हैं, इसलिए खरोंच से शुरू करने की कोई आवश्यकता नहीं है। हम तीन कंटेनर चलाएंगे, प्रत्येक की अपनी एसएसएच और अपाचे सेवा होगी। इसके सुरक्षा पक्ष पर ध्यान न दें, क्योंकि हम नेटवर्किंग पर ध्यान केंद्रित करने की कोशिश कर रहे हैं।

    एक काम हम यहां करेंगे जो हमने पिछली बार नहीं किया है, आसान पहचान के लिए हम अपने कंटेनरों को नाम देंगे। यह --name विकल्प का उपयोग करके किया जाता है। उदाहरण के लिए:

    डॉकर रन -d -ti -p 22 -p 80 --name net3 image-4:latest 

    आइए यह भी देखें कि हमारे तीन उदाहरणों में कौन से आईपी पते हैं:

    [रूट @ लोकलहोस्ट ~] # डॉकर नेट 1 का निरीक्षण करता है ग्रेप -i ipaddr
    "आईपीएड्रेस":"172.17.0.5",

    [रूट @ लोकलहोस्ट ~] # डॉकर नेट 2 का निरीक्षण करता है ग्रेप -i ipaddr
    "आईपीएड्रेस":"172.17.0.6",

    [रूट @ लोकलहोस्ट ~] # डॉकर नेट 3 का निरीक्षण करता है ग्रेप -i ipaddr
    "आईपीएड्रेस":"172.17.0.7",

    यह परीक्षण के लिए हमारा प्रारंभिक विन्यास है। हमारे पास तीन कंटेनर हैं, सभी एक ही होस्ट पर चल रहे हैं, उनकी सेवाओं और सेवा बंदरगाहों के साथ। अब, हम कुछ दिलचस्प चीजें करना शुरू कर सकते हैं।

    कंटेनर नेटवर्किंग के लिए होस्ट

    यह आसान हिस्सा है, और सच कहा जाए, तो हम इसे पिछले अभ्यास में पहले ही कर चुके हैं। हमने SSH का उपयोग करके अपने कंटेनरों से कनेक्ट किया है, और हमने टेलनेट का उपयोग करके पोर्ट्स का परीक्षण करने का प्रयास किया है। हाँ, netcat (nc) भी ठीक काम करता है, कृपया अपनी सुरक्षा klaxon को बंद कर दें। कनेक्ट करने के दो तरीके हैं। एक, आप उनके आईपी पते का उपयोग करके सीधे कंटेनरों तक पहुंच सकते हैं, जैसा कि हमने पहले किया है।

    एसएसएच 172.17.0.5
    होस्ट '172.17.0.5 (172.17.0.5)' की प्रामाणिकता स्थापित नहीं की जा सकती। ECDSA कुंजी फिंगरप्रिंट 00:4b:de:91:60:e5:22:cc:f7:89:01:19:3e:61:cb:ea है।
    क्या आप वाकई कनेक्ट करना जारी रखना चाहते हैं (हां/नहीं)? हां
    चेतावनी:ज्ञात मेजबानों की सूची में स्थायी रूप से '172.17.0.5' (ECDSA) जोड़ा गया।
    root@172.17.0.5 का पासवर्ड:

    दो, आप होस्ट-मैप किए गए पोर्ट तक भी पहुँच सकते हैं जो कंटेनर के अंदर सर्विस पोर्ट के अनुरूप होते हैं। अगर हम docker ps आउटपुट में केवल PORTS जानकारी देखें:

    0.0.0.0:49162->22/tcp, 0.0.0.0:49161->80/tcp   net1
    0.0.0.0:49163->22/tcp, 0.0.0.0:49164->80/tcp   net2
    0.0.0.0:49165->22/tcp, 0.0.0.0:49166->80/tcp   net3

    उपरोक्त उदाहरण में, net1 नाम के कंटेनर के लिए, पोर्ट 22 को होस्ट पर पोर्ट 49162 पर मैप किया गया है, जिसका अर्थ है docker0 इंटरफ़ेस, जिसे डिफ़ॉल्ट रूप से 172.17.42.1/16 नेटवर्क असाइन किया गया है। दरअसल, हम देखते हैं:

    टेलनेट 172.17.42.1 49163
    172.17.42.1 कोशिश कर रहा है ...
    172.17.42.1 से जुड़ा।
    एस्केप कैरेक्टर '^]' है।
    एसएसएच-2.0-ओपनएसएसएच_6.6.1

    अब, आप दूसरी विधि का उपयोग क्यों करना चाहेंगे, क्योंकि यह अधिक भ्रमित करने वाली और याद रखने में कठिन है? उत्तर है, यदि आप डायनेमिक मैपिंग का उपयोग नहीं करते हैं, लेकिन इसके बजाय आप ज्ञात, दिए गए होस्ट पोर्ट निर्दिष्ट करते हैं, तो आप अपने कंटेनर नेटवर्क की बहुत स्पष्ट स्थलाकृति प्राप्त कर सकते हैं। इसके अलावा, यदि आप अपने कंटेनरों को होस्ट के बाहर से एक्सेस करने की अनुमति देना चाहते हैं, तो आपको IP अग्रेषण और NAT की आवश्यकता होगी। यदि आप संचार के लिए docker0 इंटरफ़ेस का उपयोग करते हैं, तो आपको कम, सरल iptables नियमों की आवश्यकता होगी।

    आप iptables -L कमांड चलाकर और DOCKER चेन की जाँच करके इसे सत्यापित कर सकते हैं। जब भी आप -p विकल्प के साथ एक कंटेनर चलाते हैं तो नए नियम स्वचालित रूप से जुड़ जाते हैं।

    चेन डोकर (1 संदर्भ)
    लक्ष्य    समर्थक ऑप्ट स्रोत     गंतव्य
    स्वीकार करें    टीसीपी  --  कहीं भी   172.17.0.5    टीसीपी डीपीटी:http
    स्वीकार करें    टीसीपी  --  कहीं भी   172.17.0.5    टीसीपी डीपीटी:एसएसएच
    स्वीकार करें    टीसीपी  --  कहीं भी   172.17.0.6    टीसीपी डीपीटी:एसएसएच
    स्वीकार करें    टीसीपी  --  कहीं भी   172.17.0.6    टीसीपी डीपीटी:http
    स्वीकार करें    टीसीपी  --  कहीं भी   172.17.0.7    टीसीपी डीपीटी:एसएसएच
    स्वीकार करें    टीसीपी  --  कहीं भी   172.17.0.7    टीसीपी डीपीटी:http
    स्वीकार करें    टीसीपी  --  कहीं भी   172.17.0.8    टीसीपी डीपीटी:एसएसएच
    स्वीकार करें    टीसीपी  --  कहीं भी   172.17.0.8    टीसीपी डीपीटी:http

    हालाँकि, यदि आपके पास कोई सुरक्षा प्रतिबंध नहीं है, तो डायनेमिक विधि काफी उपयोगी हो सकती है, क्योंकि जब आप अपने कंटेनर शुरू करते हैं तो आपको बंदरगाहों की मैपिंग जानने की आवश्यकता नहीं होती है। आप docker ps आउटपुट को पार्स करके वास्तविक समय में जानकारी प्राप्त कर सकते हैं। हालाँकि, सेवाओं के लिए, स्थिर IP पते और ज्ञात पोर्ट सेट करना अक्सर उपयोगी होता है।

    सारांश

    क्योंकि यह थोड़ा भ्रमित करने वाला है, आइए संक्षेप में पुनर्कथन करें। किसी भी docker होस्ट में docker0 या समान नाम वाला ब्रिज रनिंग होगा, आमतौर पर /16 सबनेट के साथ, हालाँकि आप सबनेट या नेटवर्क का नाम भी बदल सकते हैं। इसके पीछे, आपके पास कंटेनरों की एक पूरी श्रृंखला हो सकती है, प्रत्येक का अपना निजी आईपी पता और एक या एक से अधिक उजागर पोर्ट हो सकते हैं।

    यदि आप इन कंटेनरों और उनके प्रासंगिक बंदरगाहों से जुड़ना चाहते हैं, तो आपके पास कई विकल्प हैं। आप सीधे कनेक्ट कर सकते हैं, लेकिन फिर आपको हर एक के लिए IP अग्रेषण, NAT और फ़ायरवॉल नियमों की आवश्यकता होती है, और आपको IP पते जानने की आवश्यकता होती है।

    यदि आप होस्ट इंटरफ़ेस (docker0) और होस्ट पोर्ट विधि का उपयोग करके कनेक्ट करना चाहते हैं, तो आपको यह जानने की आवश्यकता नहीं है कि आपका कंटेनर कैसे चलता है। आपको केवल कंटेनर पोर्ट के लिए होस्ट पोर्ट की मैपिंग जानने की आवश्यकता है। दूसरे शब्दों में, यदि आप चाहते हैं कि आपके कंटेनर कई होस्ट नोड्स के बीच पहुंच योग्य हों, तो आपको केवल होस्ट इंटरफ़ेस (docker0) को अन्य होस्ट्स के लिए दृश्यमान बनाना होगा। यह IP अग्रेषण, NAT और फ़ायरवॉल नियमों को सरल बनाता है। उदाहरण के लिए:

    0.0.0.0:30001->22/tcp net1
    0.0.0.0:30007->22/tcp net4
    0.0.0.0:30008->22/tcp net5

    उपरोक्त उदाहरण आपको तीन अलग-अलग कंटेनरों के SSH से कनेक्ट करने देता है। यदि आप वन-टू-वन मैपिंग, यानी एक ही होस्ट पोर्ट और कंटेनर पोर्ट (जैसे 22:22) का उपयोग करते हैं, तो आप प्रभावी रूप से केवल एक ही कंटेनर को एक ही सेवा के साथ सुन सकते हैं। यह आपके होम राउटर की तरह है। एक-से-एक मैपिंग का उपयोग करने में सक्षम होने के लिए आपको अपने कंटेनरों के लिए विभिन्न बंदरगाहों का उपयोग करना होगा। लेकिन यह भ्रमित करने वाला है, क्योंकि आप अपेक्षा करते हैं कि आपकी सेवाएं पूर्वानुमेय बंदरगाहों पर चलेंगी।

    ऊपर दिए गए उदाहरण से, हम देखते हैं कि हमारे पास SSH का उपयोग करने वाले तीन कंटेनर हो सकते हैं। आंतरिक रूप से, कंटेनर के दृष्टिकोण से, यह हमेशा 22 पोर्ट होता है। बाहर से, पोर्ट नंबर दोनों कंटेनर के साथ-साथ सेवा की पहचान करते हैं। और पर्दे के पीछे क्या होता है, इससे परेशान हुए बिना, यह एकमात्र टुकड़ा बन जाता है जिसे आपको जानने की जरूरत है।

    इसका मतलब है कि आप किसी प्रकार के स्क्रिप्ट लॉजिक का उपयोग करके कंटेनर बनाते समय गतिशील रूप से होस्ट पोर्ट असाइन कर सकते हैं, और फिर उस जानकारी का उपयोग अपने सर्विस पोर्ट की पहचान करने के लिए कर सकते हैं। इस प्रकार, कंटेनर नेटवर्किंग का मेजबान एक सरल और सुरुचिपूर्ण मामला बन जाता है। और आप पहले से कंटेनर स्थलाकृति को जाने बिना, मेजबान से दूसरे में भी जुड़ सकते हैं।

    नेटवर्किंग को होस्ट करने के लिए कंटेनर

    यह कुछ और दिलचस्प टुकड़ा है। आपके कंटेनर लंबे समय तक चलने वाले उद्देश्य की पूर्ति कर सकते हैं, और इसलिए, उन्हें कुछ समय के लिए ऊपर और चालू रहना पड़ सकता है। बदले में, इसका मतलब है कि आपको कंटेनरों को बनाए रखना पड़ सकता है, जिसका अर्थ है अपग्रेड, पैचिंग, होस्ट फाइल अपडेट और क्या नहीं। आप शेफ, कठपुतली या Cfengine जैसे कॉन्फ़िगरेशन प्रबंधन टूल का भी उपयोग कर रहे होंगे, इसलिए वह टुकड़ा भी है।

    पहला बड़ा सवाल जो आपको पूछने की जरूरत है, क्या कंटेनर बाहरी दुनिया से संपर्क कर सकते हैं? सही है। परिचय गाइड में, हमने सीधे आधिकारिक रिपॉजिटरी से CentOS अपडेट डाउनलोड किए, इसलिए हम जानते हैं कि यह टुकड़ा ठीक काम करता है। डोकर0 को पिंग करने के बारे में क्या खयाल है:

    दूसरा प्रश्न, क्या हम docker0 इंटरफ़ेस तक पहुँच सकते हैं, और इसके होस्ट पोर्ट से जुड़ सकते हैं। चलिए एक पल के लिए मान लेते हैं कि हमें किसी तरह कंटेनर के अंदर जरूरी जानकारी दे दी गई है।

    टेलनेट 172.17.42.1 49162
    172.17.42.1 कोशिश कर रहा है ...
    टेलनेट:पते से कनेक्ट करें 172.17.42.1:होस्ट करने के लिए कोई मार्ग नहीं

    यह कार्य नहीं करेगा, क्योंकि हमने अपने होस्ट पर IP अग्रेषण कॉन्फ़िगर नहीं किया है। इसके अलावा, आवश्यक यातायात की अनुमति देने के लिए हमें फ़ायरवॉल नियमों की आवश्यकता होगी। यहाँ, यह थोड़ा जटिल हो जाता है, क्योंकि यदि आप iptables से परिचित नहीं हैं, तो आप कुछ संघर्ष करेंगे।

    इको 1> /proc/sys/net/ipv4/ip_forward

    और iptables नियम - कुछ हद तक ढीला सेट, दिमाग (मेजबान पर):

    iptables -t फ़िल्टर -A फॉरवर्ड -d 172.17.0.0/16 \
    -o docker0 -j स्वीकार करें
    iptables -t फ़िल्टर -A फॉरवर्ड -s 172.17.0.0/16 \
    -i docker0 -j स्वीकार करें
    iptables -t फ़िल्टर -A फॉरवर्ड -i docker0 -o docker0 -j स्वीकार करें
    iptables -t nat -A POSTROUTING -s 172.17.0.0/16 \
    ! -d 172.17.0.0/16 -p tcp -j MASQUERADE --to-ports 1016-65535 \
    iptables -t nat -A पोस्टरूटिंग -s 172.17.0.0/16
    ! -d 172.17.0.0/16 -p udp -j MASQUERADE --to-ports 1016-65535 \
    iptables -t nat -A पोस्टरूटिंग -s 172.17.0.0/16
    ! -d 172.17.0.0/16 -j बहाना

    सबसे सरल विकल्प सिर्फ फ़ायरवॉल को बंद करना है - या सभी को अनुमति देना है। इसका मतलब है आवश्यक आदेश चलाना, जो हो सकता है systemctl stop फ़ायरवॉल, iptables -F या समतुल्य। कुछ स्थितियों में, यह संभव नहीं हो सकता है, क्योंकि आपको अतिरिक्त सुरक्षा की आवश्यकता होती है। हालाँकि, यह हमारे द्वारा चर्चा की गई पहली उपयोगकेस में भी शामिल है। अब, कल्पना कीजिए कि आपको हर एक कंटेनर और उससे जुड़ी सेवाओं के लिए मैन्युअल नियम बनाने होंगे।

    सही नेटवर्किंग नियमों के साथ, आप होस्ट पोर्ट से कनेक्ट करने में सक्षम होंगे, जिसका प्रभावी अर्थ अन्य कंटेनरों से बात करना है, हालांकि विशिष्ट आईपी पते या पोर्ट में ऐसा कुछ भी नहीं है जिसके लिए किसी अन्य कंटेनर के लक्ष्य की आवश्यकता हो। इसके अलावा, आप होस्ट पर अन्य नेटवर्किंग उपकरणों, या शायद दूरस्थ होस्ट से भी कनेक्ट करने में सक्षम होंगे।

    कंटेनर से कंटेनर नेटवर्किंग

    डेविड बॉवी के गीत एशेज टू एशेज की तरह, केवल उतना अच्छा नहीं है। यह सबसे उपयोगी परिदृश्य जैसा लगता है। दोबारा, हमारे पास दो विकल्प हैं। हम अन्य कंटेनरों से सीधे जुड़ने का प्रयास कर सकते हैं, या हम docker0 गतिशील रूप से मैप किए गए पोर्ट का उपयोग करने का प्रयास कर सकते हैं। हम धोखा देंगे। हम कंटेनर में प्रवेश द्वार के रूप में होस्ट और होस्ट पोर्ट का उपयोग करेंगे। अब, पहला तरीका बहुत सीधा है। आइए net1 से net2 और net3 को पिंग करने का प्रयास करें।

    यह बिना किसी समस्या के काम करता है। लेकिन समस्या यह है कि हम बाहरी दुनिया के आईपी पतों के बारे में जानते हैं! हमें यह जानकारी कंटेनर के अंदर से नहीं मिली है। वास्तव में, सुरक्षा कारणों के साथ-साथ तथ्य यह है कि आधार कंटेनर अपेक्षाकृत छोटी छवि है, आपके पास डिफ़ॉल्ट रूप से कोई महान नेटवर्किंग टूल उपलब्ध नहीं है। आपके पास ifconfig उपयोगिता भी उपलब्ध नहीं होगी। इसके अलावा, आप कंटेनरों के अंदर iptables में हेरफेर नहीं कर सकते हैं:

    iptables -एल
    iptables v1.4.21:iptables तालिका 'फ़िल्टर' प्रारंभ नहीं कर सकता:अनुमति अस्वीकृत (आपको रूट होना चाहिए)
    शायद iptables या आपके कर्नेल को अपग्रेड करने की आवश्यकता है।

    इसलिए, docker0 तक पहुँचने और होस्ट पोर्ट से जुड़ने की दूसरी विधि वास्तव में संभव नहीं हो सकती है, क्योंकि हम होस्ट फ़ायरवॉल नियमों में हेरफेर नहीं कर सकते हैं, कंटेनरों के भीतर से नहीं। इसलिए हम तीसरे तरीके की चर्चा करेंगे।

    कंटेनर लिंक!

    इसे करने का उचित तरीका --link सुविधा का उपयोग करना है। इसका मतलब यह है कि, हम उन्हें अन्य, मौजूदा कंटेनरों से जोड़ते हुए नए उदाहरण देंगे। लिंक फ़ंक्शन लिंक किए गए कंटेनरों के होस्टनाम और आईपी पते को पर्यावरण और नए उदाहरण की /etc/hosts फ़ाइल में सम्मिलित करेगा। शायद यह थोड़ा भ्रमित करने वाला लगता है, तो चलिए उदाहरण देते हैं:

    डॉकर रन-डी-टी-पी 80 --नाम वेब छवि -4:नवीनतम
    8e689d8ae3ef43eeab3bfa9cf523e1cc6658dae5fc665f8cbf889db17db46c26

    डॉकर वेब का निरीक्षण करता है | ग्रेप -i ipaddr
    "आईपीएड्रेस":"172.17.0.9",

    एनसी -w1 -v 172.17.0.9 80
    एनसीएटी:संस्करण 6.40 ( https://nmap.org/ncat )
    Ncat:172.17.0.9:80 से जुड़ा।

    हमारे पास एक कंटेनर चल रहा है, और यह एक वेब सर्वर माना जाता है। अब, हम चाहते हैं कि ग्राहक इसे एक्सेस कर सकें। हम आईपी पते के बजाय सर्वर नाम का उपयोग करना चाहते हैं, क्योंकि हमें स्थलाकृति का कोई पूर्व ज्ञान नहीं हो सकता है। इसके अलावा, नाम उपयोगी होते हैं क्योंकि वे हमें नेटवर्क लेआउट बदलने की अनुमति देते हैं। दरअसल, चलिए एक क्लाइंट कंटेनर बनाते हैं और इसे हमारे वेब सर्वर से लिंक करते हैं:

    डॉकर रन-टी-नाम क्लाइंट-लिंक वेब:वेब छवि-4:नवीनतम/बिन/बैश

    हमारे यहाँ जो है वह निम्नलिखित है। हम स्रोत का एक लिंक बना रहे हैं:लक्ष्य। दूसरे शब्दों में, वेब नाम का सर्वर (कंटेनर) क्लाइंट नाम के हमारे नए कंटेनर के अंदर वेब के रूप में दिखाई देगा। यदि आप कंटेनर को स्पॉन करते हैं और फिर उससे अटैच करते हैं, तो आप BASH शेल में env कमांड चलाकर पर्यावरण की जांच कर सकते हैं:

    WEB_PORT_80_TCP_PORT=80
    WEB_PORT_80_TCP=tcp://172.17.0.9:80
    पथ=/usr/स्थानीय/sbin:/usr/स्थानीय/बिन:/usr/sbin:/usr/bin:/sbin:/बिन
    पीडब्ल्यूडी=/
    WEB_PORT_22_TCP_ADDR=172.17.0.9
    कंटेनर_uuid=558a9db0-6d1e-d9d2-b62d-a8dbfbad0b2d
    WEB_PORT_22_TCP=tcp://172.17.0.9:22
    एसएचएलवीएल =1
    होम =/रूट
    WEB_NAME=/क्लाइंट/वेब
    WEB_PORT_80_TCP_PROTO=tcp
    WEB_PORT_80_TCP_ADDR=172.17.0.9
    LESSOPEN=||/usr/bin/lesspipe.sh %s
    WEB_PORT=tcp://172.17.0.9:22
    _=/usr/bin/env

    क्योंकि एक ही नाम की मैपिंग भ्रमित करने वाली हो सकती है, आइए एक अलग मैपिंग का प्रयास करें:

    डॉकर रन-टी-नाम क्लाइंट-लिंक वेब:डेडोमेडो इमेज-4:नवीनतम / बिन/बैश

    और तब हमें मिलता है:

    वैकल्पिक रूप से, यदि आप ऐसे कंटेनर पैदा कर रहे हैं, जिन्हें बस जल्दी काम करने की जरूरत है, तो आप उन्हें रन --rm विकल्प का उपयोग करके बनाने पर विचार कर सकते हैं। अल्पकालिक कार्यों के लिए, कंटेनर फ़ाइलों को डिस्क पर रखने का कोई कारण नहीं है, और आप डॉकर को स्वचालित रूप से साफ़ कर सकते हैं। आधिकारिक दस्तावेज पढ़ना:

    डिफ़ॉल्ट रूप से एक कंटेनर की फाइल सिस्टम कंटेनर से बाहर निकलने के बाद भी बनी रहती है। यह डिबगिंग को बहुत आसान बनाता है (चूंकि आप अंतिम स्थिति का निरीक्षण कर सकते हैं) और आप अपने सभी डेटा को डिफ़ॉल्ट रूप से बनाए रखते हैं। लेकिन अगर आप शॉर्ट-टर्म फोरग्राउंड प्रोसेस चला रहे हैं, तो ये कंटेनर फाइल सिस्टम वास्तव में ढेर कर सकते हैं। यदि इसके बजाय आप चाहते हैं कि डॉकटर स्वचालित रूप से कंटेनर को साफ करे और कंटेनर से बाहर निकलने पर फ़ाइल सिस्टम को हटा दे, तो आप --rm फ्लैग जोड़ सकते हैं।

    डॉकर रन --rm -ti --name client --link web:dedoimedo image-4:latest /bin/bash

    होस्ट फ़ाइल

    लिंक फ़ंक्शन के बारे में दूसरी अच्छी बात यह है कि नए कंटेनरों में स्वचालित रूप से आवश्यक नामों के साथ उनकी /etc/hosts फ़ाइल पॉप्युलेट हो जाएगी, इसलिए आप एक ट्रीट के लिए हैं। IPv6 प्रविष्टियों को हटाकर यह कुछ नीचे जैसा दिखाई देगा:

    [रूट@e1e92f6918dd /]# बिल्ली /etc/hosts
    172.17.0.11     e1e92f6918dd
    127.0.0.1       लोकलहोस्ट
    172.17.0.9      dedoimedo 8e689d8ae3ef वेब

    सर्वर से कनेक्ट करें, इसके नाम का प्रयोग करके

    और चूँकि हमारे पास होस्ट नाम रिज़ॉल्यूशन और पर्यावरण सेटिंग्स हैं, यह कहीं भी किसी भी नेटवर्किंग की तरह हो जाता है। वास्तव में सरल, यादगार और सबसे महत्वपूर्ण, पटकथा योग्य।

    और पढ़ना

    अगर आपको नहीं लगता कि आपने पर्याप्त मज़ा लिया है, तो:

    डॉकर एडवांस्ड नेटवर्किंग गाइड

    निष्कर्ष

    तुम वहाँ जाओ। एक और भयानक विषय demystified। बात यह है कि, मेरा मानना ​​​​है कि डॉकटर कंटेनरों के साथ काम करते समय आपके सामने सबसे बड़ी चुनौती फ़ायरवॉल नियमों का विन्यास है, न कि इस तकनीक के नेटवर्किंग टुकड़े का अभिन्न अंग। लेकिन एक बार जब आप इसे समझ जाते हैं, तो यह उतना मुश्किल या जटिल नहीं होता है।

    हमने देखा है कि कंटेनर कैसे शुरू करें और बंदरगाहों को कैसे उजागर करें, कंटेनर से कंटेनर तक व्यायाम करें, कंटेनर से होस्ट और कंटेनर से कंटेनर नेटवर्किंग, सेटअप अग्रेषण, और हमारे जीवन को अधिक आसान और अनुमानित बनाने के लिए लिंक का उपयोग करें। कुल मिलाकर, यह एक व्यस्त लेकिन उम्मीद के मुताबिक व्यावहारिक मार्गदर्शिका थी। दोबारा, यदि आपके पास कोई अन्य विषय है, तो उन्हें बेझिझक सुझाएं। और हमारा काम हो गया।

    पी.एस. यदि आप इस लेख को पसंद करते हैं, तो बेहतर होगा कि आप Dedoimedo को कुछ प्यार वापस दें!

    प्रोत्साहित करना।

  1. आभासी मशीनों में 3D त्वरण - भाग 1:VMware और DirectX - ट्यूटोरियल

    मौजूदा मेजबानों के शीर्ष पर वर्चुअलाइज्ड ऑपरेटिंग सिस्टम चलाना एक अच्छा विचार है। यह मजेदार है, यह अच्छा है, यह आपको अपने वास्तविक मंच पर प्रतिबद्ध होने से पहले सॉफ्टवेयर के साथ प्रयोग करने की अनुमति देता है, यह आपको उन चीजों को करने की अनुमति देता है जो आप सामान्य रूप से करने की हिम्मत नहीं करते, य

  1. Microsoft EMET v4 समीक्षा और व्यापक ट्यूटोरियल

    अब तक, आप जानते हैं कि Microsoft एन्हांस्ड मिटिगेशन एक्सपीरियंस टूलकिट विंडोज ऑपरेटिंग सिस्टम के लिए सबसे अच्छा सुरक्षा सॉफ्टवेयर है। कारण अनेक हैं। मुख्य रूप से, यह सेटअप करने के लिए सरल और पारदर्शी है, और कोई मूर्खतापूर्ण प्रश्न नहीं हैं। यह निःशुल्क है। और यह जो करता है उसमें प्रभावी है। आपको मूर

  1. Windows 10 शोषण सुरक्षा - ट्यूटोरियल

    विंडोज 10 फॉल क्रिएटर्स अपडेट (बिल्ड 1709) की रिलीज के साथ, सबसे शानदार और सुरुचिपूर्ण एन्हांस्ड मिटिगेशन एक्सपीरियंस टूलकिट (ईएमईटी) अब उपलब्ध नहीं है या इस ऑपरेटिंग सिस्टम पर स्थापित किया जा सकता है। इसके बजाय, ये शमन अब विंडोज 10 का एक अभिन्न अंग हैं। चूंकि मैं EMET का बहुत बड़ा प्रशंसक हूं, और