मेजबान और आंतरिक ब्रिज नेटवर्क दोनों के लिए डॉकटर कंटेनर को कनेक्ट करें


14

मैं एक डॉक कंटेनर को एक निजी ( --internal) डॉकर नेटवर्क और पूर्वनिर्धारित hostनेटवर्क के बीच राउटर के रूप में चलाने की कोशिश कर रहा हूं । इसका मतलब है कि कंटेनर में दो नेटवर्क इंटरफेस होने चाहिए: एक "बाहर" इंटरफ़ेस, जो सभी होस्ट आईपी पते तक पहुंच सकता है, और एक "अंदर" इंटरफ़ेस, जो आंतरिक डॉकर नेटवर्क में कंटेनरों के लिए प्रवेश द्वार के रूप में कार्य करता है

राउटर कंटेनर खुद ही नेट नेटवर्क ट्रैफिक को कंटेनर से / तक ले जाएगा।

मुझे उन दो इंटरफेस के साथ कंटेनर को चलाने के लिए डॉकर को कॉन्फ़िगर करने का कोई तरीका नहीं मिला है। निकटतम मैं प्राप्त कर सकते हैं दो bridgeइंटरफेस सौंपा है, जो वास्तव में मैं क्या जरूरत नहीं है।

मैन्युअल रूप से कनेक्ट करने का प्रयास करने में त्रुटि होती है:

# docker network connect host root_router_1
Error response from daemon: Container cannot be disconnected from host network or connected to host network

क्या कोई मुझे दिखा सकता है कि इसे कैसे प्राप्त किया जा सकता है, अधिमानतः डॉकटर कंपोज़ भी?


@PunMum दुर्भाग्य से नहीं। हमने सभी कंटेनरों को सीधे होस्ट नेटवर्क से कनेक्ट किया और कंटेनरों के अंदर आईपी को कॉन्फ़िगर किया।
हेक्साहोलिक

जवाबों:


2

इस प्रश्नोत्तर के अनुसार जीथब पर :

होस्ट नेटवर्क विशेष है। आपको network_mode का उपयोग करना होगा: सेवा पर होस्ट करें


network_modeअगर आप एक आंतरिक नेटवर्क और मेजबान नेटवर्क से जुड़े कुछ चाहिए काम नहीं करता। यह पागल लगता है कि हम इस समस्या का एक अच्छा स्पष्ट समाधान नहीं ढूंढ सकते हैं।
jv-dev

2

डॉकर एक कंटेनर को एक ही समय में होस्ट नेटवर्क और किसी भी अन्य डॉकर ब्रिज नेटवर्क से कनेक्ट करने की अनुमति नहीं देता है। मैं एक उदाहरण के साथ कारण बताने की कोशिश करूंगा:

  • हमें एक कंटेनर C1 के बारे में सोचना चाहिए। Hypothetically, C1 होस्ट नेटवर्क (--net = host) और एक Docker Bridge नेटवर्क Br1 (--net = Br1) से जुड़ा होगा।
  • एक दूसरा कंटेनर, हम कहते हैं कि C2, Br1 से जुड़ा है।

उपरोक्त सेटअप के साथ, मेरा अनुमान है कि होस्ट नेटवर्क C2 से दिखाई देता है, और मुझे लगता है यही कारण है कि डॉकर स्वचालित रूप से हमें गैर-होस्ट-निर्दिष्ट कंटेनरों को होस्ट नेटवर्क को उजागर करने से रोकता है।

कहा जा रहा है, अगर हमारे पास कंटेनरों का एक सेट है, और हम चाहते हैं कि वे सभी आपस में जुड़े हों, तो केवल एक कंटेनर होस्ट नेटवर्क तक पहुंच सकता है, मेरा दृष्टिकोण होगा:

  • [C2, ..., CN] एक उपयोगकर्ता-परिभाषित डोकर ब्रिज Br1 (--net = Br1) से जुड़े हैं
  • C1 होस्ट नेटवर्क से जुड़ा है (--net = host)
  • सी 1 बाकी कंटेनरों से सुलभ होने के लिए एक बंदरगाह को उजागर करता है

संपादित करें: हमें अभी भी iptables नीतियों को इस तरह से अनुकूलित करना होगा कि C1 को बाकी कंटेनरों से पहुँचा जा सके (देखें https://docs.docker.com/network/iptables/ )

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.