2016-02-12 10 views
10

का उपयोग करके डॉकर-मशीन से कनेक्ट करें कुछ विशेषताएं हैं, जैसे कि https के बिना जावास्क्रिप्ट सेवा कर्मचारी, जो केवल स्थानीयहोस्ट पर काम करते हैं, लेकिन जब मैं डॉकर-कंपोज़र का उपयोग करके अपना ऐप चलाता हूं, जो शीर्ष पर चलता है डोकर-मशीन की, मैं से'लोकलहोस्ट'

docker-machine ip default 

पता मैं का उपयोग कर इसे करने के लिए कनेक्ट करने की आवश्यकता वहाँ एक तरीका है कि आईपी के localhost मैप करने के लिए है?

+0

मैं 'जावास्क्रिप्ट Worker' से परिचित नहीं हूँ, लेकिन मैं अपने ब्राउज़र पर इस रन लगता है, नहीं स्थानीय होस्ट –

+0

हाँ, यह आपके ब्राउज़र में चलाता है। लेकिन यदि आप किसी होस्टनाम के साथ सर्वर पर चल रहे हैं तो 'लोकलहोस्ट', पृष्ठ को काम करने के लिए https पर सेवा की आवश्यकता है। – bigblind

+0

इसके बारे में क्या, यदि आप अपनी 'मेजबान' फ़ाइल को स्थानीय मशीन में संपादित करते हैं और डॉकर होस्ट –

उत्तर

22

आप अपनी स्थानीय मशीन पर डॉकर होस्ट पर पोर्ट को मैप करने के लिए वर्चुअलबॉक्स पोर्ट को आगे जोड़ सकते हैं।

अपने डोकर मशीन मान लिया जाये कि "डिफ़ॉल्ट" कहा जाता है और आप स्थानीय होस्ट पर अपने कंटेनर में पोर्ट 80 मैप करना चाहते हैं: 8888 आप चला सकते हैं:

vboxmanage modifyvm default --natpf1 "nameformapping,tcp,,8888,,80" 

या यदि वीएम चल रहा है

vboxmanage controlvm default natpf1 "nameformapping,tcp,,8888,,80" 

यह वर्चुअलबॉक्स यूआई में वीएम के लिए सेटिंग्स में भी किया जा सकता है। यहाँ VirtualBox https://www.virtualbox.org/manual/ch06.html#network_nat से डॉक

तुम भी डोकर मशीन पर पोर्ट पर अपने कंटेनर पर बंदरगाह मैप करने के लिए, क्या तुम जब आप कंटेनर शुरू (यह भी मानता है कि आप एक है कि आवश्यकता होगी "80 बेनकाब है "अपने Dockerfile में आदेश

docker run -p 80:80 mycontainer 

https://docs.docker.com/engine/reference/run/

यह भी देखें: https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md

+0

अच्छा जवाब। मैंने आम तौर पर मैपिंग के आदेश को अन्य तरीकों से वर्णित किया है। आप लोकलहोस्ट को मानचित्र करते हैं: 8888 से vm: 80 और पोर्ट 80 आपके डॉकर मशीन पर कंटेनर में पोर्ट 80 तक, पैकेट प्रवाह के तरीके से। – Matt

+0

'natpfN' एक झंडा नहीं है, यह एक स्थितित्मक तर्क है। आदेश 'vboxmanage controlvm डिफ़ॉल्ट natpf1' होना चाहिए, नाम प्रारूपण, टीसीपी, 8888, 80 "' –

+0

अच्छी पकड़, यह संशोधित करने के लिए एक ध्वज है लेकिन controlvm नहीं ... बहुत भ्रमित है। मैंने दोनों विकल्पों को दिखाने के लिए उत्तर अपडेट किया –

13

संपादित करने से आपके hosts फ़ाइल का कारण बनता है कि अपने स्थानीय मशीन केवल दिखता है सीधे डोमेन के लिए निर्दिष्ट आईपी पते पर। तो, आप docker-machine पर docker-machine के आईपी पते को अपनी स्थानीय मशीन में etc\hosts फ़ाइल में जोड़ सकते हैं और docker-machine पर बंदरगाह 80 पर अपने कंटेनर पर पोर्ट 80 मानचित्र को मैप कर सकते हैं।

उदाहरण:

1) जाओ डोकर मेजबान आईपी पते

$ docker-machine ip default 
192.168.99.100 

2) अपने स्थानीय मशीन

192.168.99.100 domain.com 

3) में etc/hosts फाइल करने के लिए इस लाइन जोड़े की जाँच करें कि आपकी मशीन है डोमेन को हल करना

$ ping domain.com 
PING domain.com (192.168.99.100): 56 data bytes 
64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.294 ms 
64 bytes from 192.168.99.100: icmp_seq=1 ttl=64 time=0.437 ms 
64 bytes from 192.168.99.100: icmp_seq=2 ttl=64 time=0.556 ms 
64 bytes from 192.168.99.100: icmp_seq=3 ttl=64 time=0.270 ms 

नोट्स:

  • विंडोज उपयोगकर्ताओं मेजबान फ़ाइल C:\Windows\System32\Drivers\etc\hosts
  • पर localted है तो आप सिर्फ एक ही डोकर मशीन में एकाधिक डोमेन समर्थन करना चाहते हैं के लिए, यदि आप किसी प्रॉक्सी-कंटेनर बना सकते हैं अपने अन्य कंटेनर के सामने अंदर nginx के साथ।
1

सबसे आसान तरीका है VBox से पोर्ट अग्रेषण बनाने के लिए है

सेटिंग्स> नेटवर्क> एडाप्टर 1-> पोर्ट अग्रेषण

तो नाम, मेजबान में 127.0.0.1 (जोड़ने स्थानीय के लिए जोड़ने मेजबान) तो उचित पोर्ट बाइंडिंग और वीएम को पुनरारंभ करें।

enter image description here

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