TL, DR आपके वर्चुअलबॉक्स होस्ट के नेटवर्क मोड की जाँच करें - यह होना चाहिए bridged
अगर आप अपने स्थानीय नेटवर्क पर वर्चुअल मशीन (और इसकी मेजबानी कर रहे डॉकटर कंटेनर) को सुलभ चाहते हैं।
ऐसा लगता है कि आपका भ्रम झूठ है जिसमें HTTP के माध्यम से आपके एप्लिकेशन को एक्सेस करने के लिए होस्ट को कनेक्ट करना है। आपने वास्तव में यह नहीं बताया है कि आपका कॉन्फ़िगरेशन क्या है - मैं कुछ अनुमान लगाने जा रहा हूं, इस तथ्य के आधार पर कि आपको अपने टैग में "विंडोज" और "वर्चुअलबॉक्स" मिला है।
मैं अनुमान लगा रहा हूं कि आपके पास विंडोज होस्ट पर वर्चुअलबॉक्स में चल रहे लिनक्स के कुछ स्वाद पर चलने वाला डॉक है। मैं इस प्रकार से आईपी पते को लेबल करने जा रहा हूं:
D
= डॉकटर कंटेनर का आईपी पता
L
वर्चुअलबॉक्स में चल रहे लिनक्स होस्ट का आईपी पता
W
= विंडोज होस्ट का आईपी पता
जब आप अपने Windows होस्ट पर अपना Go एप्लिकेशन चलाते हैं, तो आप इसे http://W:8080/
अपने स्थानीय नेटवर्क पर कहीं से भी कनेक्ट कर सकते हैं । यह काम करता है क्योंकि गो एप्लिकेशन विंडोज मशीन पर पोर्ट 8080 को बांधता है और जो कोई भी आईपी पते पर पोर्ट 8080 तक पहुंचने की कोशिश करता है वह W
कनेक्ट हो जाएगा।
और यहाँ है जहाँ यह और अधिक जटिल हो जाता है:
VirtualBox, जब यह एक वर्चुअल मशीन (VM) सेट करता है, तो नेटवर्क को कई अलग-अलग मोडों में से एक में कॉन्फ़िगर कर सकता है। मुझे याद नहीं है कि सभी विभिन्न विकल्प क्या हैं, लेकिन आप जो चाहते हैं वह है bridged
। इस मोड में, वर्चुअलबॉक्स वर्चुअल मशीन को आपके स्थानीय नेटवर्क से जोड़ता है जैसे कि यह नेटवर्क पर एक स्टैंड-अलोन मशीन थी, ठीक उसी तरह जैसे कोई अन्य मशीन जो आपके नेटवर्क में प्लग की गई थी। मेंbridged
मोड, आभासी मशीन किसी भी अन्य मशीन की तरह अपने नेटवर्क पर दिखाई देता है। अन्य मोड अलग चीजें सेट करते हैं और मशीन आपके नेटवर्क पर दिखाई नहीं देगी।
तो, मान लें कि आपने लिनक्स होस्ट ( bridged
) के लिए नेटवर्किंग सही ढंग से सेट की है , तो लिनक्स होस्ट का आपके स्थानीय नेटवर्क (जैसे कि 192.168.0.x) पर एक आईपी एड्रेस होगा और आप अपने डॉकर कंटेनर को एक्सेस कर पाएंगे http://L:8080/
।
यदि लिनक्स होस्ट के अलावा कुछ मोड में सेट है bridged
, तो आप कर सकते हैं विंडोज मेजबान से पहुंच प्राप्त कर सकेंगे, लेकिन यह वास्तव में क्या मोड क्या है पर निर्भर जा रहा है।
EDIT - नीचे दी गई टिप्पणियों के आधार पर, यह बहुत अधिक लगता है जैसे मैंने ऊपर वर्णित स्थिति सही है।
आइए थोड़ा पीछे चलते हैं: यहाँ बताया गया है कि कैसे डॉकर मेरे कंप्यूटर (उबंटू लिनक्स) पर काम करता है।
कल्पना कीजिए कि मैं एक ही आदेश आप चलाएँ: docker run -p 8080:8080 dockertest
। यह क्या करता है कंटेनर पर dockertest
8080 पोर्ट करने के लिए लिनक्स होस्ट (मेरा पीसी) पर छवि और आगे (कनेक्ट) पोर्ट 8080 के आधार पर एक नया कंटेनर शुरू करें । डॉकटर डेमन को संवाद करने के लिए और कंटेनरों को एक दूसरे के साथ संवाद करने की अनुमति देने के लिए डॉकटर सेट करता है यह स्वयं का आंतरिक नेटवर्किंग (आईपी पते के अपने सेट के साथ) है। तो मूल रूप से आप उसके साथ क्या कर रहे हैं-p 8080:8080
डॉकर की आंतरिक नेटवर्किंग को "बाहरी" नेटवर्क से जोड़ रहा है - यानी। होस्ट का नेटवर्क एडेप्टर - एक विशेष पोर्ट पर।
मेरे साथ इतनी दूर? ठीक है, अब हम एक कदम पीछे लेते हैं और अपने सिस्टम को देखते हैं। आपकी मशीन विंडोज चल रही है - डॉकर विंडोज पर (वर्तमान में) नहीं चलता है, इसलिए आप जिस टूल का उपयोग कर रहे हैं, उसने वर्चुअलबॉक्स वर्चुअल मशीन में लिनक्स होस्ट सेट किया है। जब आप docker run
अपने वातावरण में करते हैं, तो ठीक यही काम हो रहा है - लिनक्स होस्ट पर पोर्ट 8080 कंटेनर पर पोर्ट 8080 से जुड़ा हुआ है। यहां बड़ा अंतर यह है कि आपका विंडोज होस्ट लिनक्स होस्ट नहीं है जिस पर कंटेनर चल रहा है, इसलिए यहां एक और परत है और यह इस परत पर संचार है जहां आप समस्याओं में चल रहे हैं।
आपको दो चीजों में से एक की जरूरत है:
विंडोज 80 होस्ट करने के लिए वर्चुअलबॉक्स वीएम पर पोर्ट 8080 कनेक्ट करने के लिए, ठीक उसी तरह जैसे आप डॉकर कंटेनर को होस्ट पोर्ट से कनेक्ट करते हैं।
वर्चुअलबॉक्स वीएम को सीधे आपके स्थानीय नेटवर्क से जोड़ने के लिए, bridged
ऊपर वर्णित नेटवर्क मोड के साथ ।
यदि आप पहले विकल्प के लिए जाते हैं, तो आप उस कंटेनर तक पहुंच सकेंगे http://W:8080
जहां W
विंडोज होस्ट का आईपी पता या होस्टनाम है। यदि आप दूसरे के लिए चुनते हैं, तो आप कंटेनर को एक्सेस करने में सक्षम होंगे http://L:8080
जहां L
लिनक्स वीएम का आईपी पता या होस्टनाम है।
तो यह सब उच्च-स्तरीय स्पष्टीकरण है - अब आपको यह पता लगाने की आवश्यकता है कि वर्चुअलबॉक्स वीएम के कॉन्फ़िगरेशन को कैसे बदलना है। और यहाँ जहाँ मैं वास्तव में आपकी मदद नहीं कर सकता हूँ - मुझे नहीं पता कि आप अपने विंडोज मशीन पर यह सब करने के लिए किस उपकरण का उपयोग कर रहे हैं और मैं विंडोज पर डॉकर का उपयोग करने से बिल्कुल परिचित नहीं हूँ।
यदि आप वर्चुअलबॉक्स कॉन्फ़िगरेशन विंडो में प्राप्त कर सकते हैं, तो आप नीचे वर्णित परिवर्तन कर सकते हैं। एक कमांड लाइन क्लाइंट भी है जो VMs को संशोधित करेगा, लेकिन मैं इससे परिचित नहीं हूं।
के लिए bridged
मोड (और यह वास्तव में सरल विकल्प है), अपने वीएम शट डाउन, शीर्ष पर "सेटिंग" बटन क्लिक करें और के लिए नेटवर्क मोड बदलने के bridged
लिए, तो वी एम को पुनः आरंभ और आप अच्छा जाने के लिए। VM को आपके स्थानीय नेटवर्क पर DHCP के माध्यम से एक IP पता चुनना चाहिए और उस IP पते पर नेटवर्क के अन्य कंप्यूटरों पर दिखाई देना चाहिए।