2014-07-07 10 views
29

मैं समझने की कोशिश कर रहा हूं कि होस्ट मशीन से जुड़े तार से आने वाले नेटवर्क पैकेट के लिए हुड के नीचे क्या हो रहा है और डॉकर कंटेनर के अंदर एक एप्लिकेशन को निर्देशित किया गया है।क्या डॉकर कंटेनर का अपना टीसीपी/आईपी स्टैक है?

यदि यह क्लासिक वीएम था, तो मुझे पता है कि मेजबान पर आने वाला एक पैकेट हाइपरवाइजर (वीएमवेयर, वीबॉक्स आदि कहें) वीएम के वर्चुअल एनआईसी और टीसीपी/आईपी स्टैक के माध्यम से प्रेषित किया जाएगा अतिथि ओएस के अंत में, आवेदन तक पहुंचने के लिए।

डोकर के मामले में, मुझे पता है कि एक पैकेट होस्ट मशीन पर आ मेजबान के नेटवर्क इंटरफेस से docker0 पुल को भेजा जाता है, कि एक veth जोड़ी कंटेनर के अंदर आभासी इंटरफेस eth0 को समाप्त होने से जुड़ा है । लेकिन उसके बाद? चूंकि सभी डॉकर कंटेनर होस्ट कर्नेल का उपयोग करते हैं, क्या यह मानना ​​सही है कि पैकेट को मेजबान कर्नेल के टीसीपी/आईपी स्टैक द्वारा संसाधित किया जाता है? यदि हां, तो कैसे?

मैं वास्तव में विस्तृत स्पष्टीकरण (या यदि आप जानते हैं कि संसाधन इसे जोड़ने के लिए स्वतंत्र महसूस करता है) को वास्तव में हुड के तहत क्या हो रहा है, इसके बारे में पढ़ना अच्छा लगेगा। मैंने पहले से ही this पृष्ठ को ध्यान से पढ़ा है, लेकिन यह सब कुछ नहीं कहता है।

आपके उत्तर के लिए अग्रिम धन्यवाद।

+1

हां, होस्ट टीसीपी/आईपी स्टैक का उपयोग किया जाता है। आपके द्वारा लिंक किए गए पृष्ठ को पढ़ने के बाद, लिनक्स कर्नेल और डॉकर स्रोत कोड को छोड़कर और भी जोड़ना मुश्किल है- क्या आपके पास कोई विशिष्ट प्रश्न हैं? – nos

+0

आपकी टिप्पणी के लिए धन्यवाद। ठीक है, उदाहरण के लिए, यह अस्पष्ट है कि डेटा को मेजबान मशीन के 'eth0'' पर 'डॉकर 0 पुल' के रूप में प्रेषित किया जाता है: मैंने वायरशर्क का उपयोग करने की कोशिश की लेकिन मैं केवल 'डॉकर 0' से पैकेट का आदान-प्रदान देख सकता हूं और ' vethXYZ'; मैं यह भी मानता हूं कि 'डॉकर 0' और 'eth0' के बीच एक एनएटी है क्योंकि पते बदलते हैं लेकिन मुझे इसके बारे में दस्तावेज नहीं मिला। –

+0

सही, उसमें से अधिकांश, डॉकर द्वारा नियोजित एनएटी नियमों सहित उस दस्तावेज़ में समझाया गया है। – nos

उत्तर

9

नेटवर्क कोड, जैसा कि "कोड" में है, निश्चित रूप से कंटेनर में नहीं है, यह कर्नेल में है जिसमें मेजबान और सभी कंटेनरों द्वारा साझा किया गया केवल एक ही है (आप इसे पहले ही जानते थे)। प्रत्येक कंटेनर का अपना अलग नेटवर्क नेमस्पेस है, जिसका अर्थ है कि इसका अपना नेटवर्क इंटरफेस और रूटिंग टेबल है।

यहाँ एक संक्षिप्त कुछ उदाहरण के साथ धारणा शुरू लेख है: http://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/ और मैं सहायक भी इस लेख पाया: http://containerops.org/2013/11/19/lxc-networking/

मुझे आशा है कि यह आप बेहतर जानकारी के लिए पर्याप्त संकेत देता है।

संबंधित मुद्दे