2016-03-30 10 views
11

से कंटेनर के वेब सर्वर तक नहीं पहुंच पा मैं बस अपना Mac का उपयोग कर homebrew पर डोकर-उपकरण बॉक्स के साथ डोकर स्थापित: install docker with homebrewडोकर मशीन: मेजबान

बनाने और रेल, Postgres के साथ एक कंटेनर विन्यस्त और डोकर-लिखें सुविधा शुरू करने के बाद सबकुछ ठीक दिखता है लेकिन मैं मेजबान से वेबसर्वर तक नहीं पहुंच सकता।

की

$ docker-compose up 

dummy_1 | I, [2016-03-30T14:55:53.130639 #6] INFO -- : listening on addr=0.0.0.0:8000 fd=10 

जब मैं गूगल क्रोम में टाइप यूआरएल http://0.0.0.0:8000/ मैं

This site can’t be reached 

0.0.0.0 refused to connect. 
ERR_CONNECTION_REFUSED 

मिल उत्पादन तो मैं

$ docker-machine env dummy 

की कोशिश की निम्नलिखित उत्पादन के साथ:

export DOCKER_TLS_VERIFY="1" 
export DOCKER_HOST="tcp://192.168.99.100:2376" 
export DOCKER_CERT_PATH="/Users/choi/.docker/machine/machines/dummy" 
export DOCKER_MACHINE_NAME="dummy" 

जब मैं क्रोम http://192.168.99.100:2376 में कोशिश करता हूं तो मुझे एक खाली फ़ाइल डाउनलोड होती है। ऐसा क्यों है? मैं अपने रेल ऐप के डिफ़ॉल्ट ग्रीटिंग पेज की अपेक्षा करता हूं।

+3

0,0 पर .0.0 आपके कंटेनर का आईपी पता नहीं है - "0.0.0.0 पर सुनना" का अर्थ है कि सर्वर किसी भी नेटवर्क इंटरफ़ेस पर कनेक्शन स्वीकार करेगा। Http://stackoverflow.com/questions/20778771/what-is-the-difference-between-0-0-0-0-127-0-0-1-and-localhost – Ben

उत्तर

10

192.168.99.100 इस उदाहरण में आपके डॉकर होस्ट का आईपी है। आपको अपने कंटेनर के बंदरगाह का पर्दाफाश करने की आवश्यकता है और फिर आप इसे बाहरी दुनिया से कनेक्ट कर पाएंगे।

मैं डॉकर कंपोज़ से परिचित नहीं हूं, लेकिन आपके द्वारा पोस्ट किया गया लॉग पोर्ट 8000 का खुलासा करता है। इसलिए, http://192.168.99.100:8000 आज़माएं।

(कारण http://192.168.99.100:2376 काम नहीं करता है, क्योंकि उस पते और डोकर डेमॉन ही है, जो न HTTP- आधारित है के बंदरगाह है 0.0.0.0 के लिए के रूप में:। यह पता जो अपने वेब सर्वर अंदर पर ध्यान दे रही है कंटेनर और उसमें सभी बाहरी कनेक्शनों के बराबर है। हालांकि, बिना किसी बंदरगाह के खुलासा किया गया है, इसमें कोई रास्ता नहीं है!)

+0

भयानक धन्यवाद देखें! – StandardNerd

+0

अद्भुत !!!!!! – Turtle

5

बंदरगाह के संपर्क के बाद, आप डॉकर द्वारा बनाए गए आंतरिक आईपी पते से वेब ऐप तक पहुंच सकते हैं। आप आदेश चलाकर कंटेनर के नाम का उपयोग कर आईपी पते प्राप्त कर सकते हैं:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' 'container name here' 

कहते हैं कि तुम आईपी 172.17.0.2 मिला करते हैं।आप open http://172.17.0.2:8000

+2

यह काम नहीं करेगा क्योंकि वह डॉकर मशीन का उपयोग कर डॉकर चला रहा है। डॉकर मशीन में आपके द्वारा बनाए गए कंटेनर होस्ट के पते के माध्यम से पहुंच योग्य होते हैं और सीधे नहीं। – Willa

+0

आप सही हैं, @ विला। लेकिन पुराने संस्करणों में 'सूडो मार्ग' के रूप में मार्ग जोड़ने के बाद कंटेनर के निजी आईपी तक पहुंचना संभव था- 172.17.0.0/16 $ (डॉकर-मशीन आईपी देव) जोड़ें। –

3

जो लोग localhost:4000 की कोशिश की के लिए चला सकते हैं के रूप में the tutorial कहा लेकिन असफल:

इनपुट इस

$ docker-machine env 

और प्राप्त परिणाम

तरह
export DOCKER_TLS_VERIFY="1" 
export DOCKER_HOST="tcp://192.168.99.100:2376" 
export DOCKER_CERT_PATH="/Users/choi/.docker/machine/machines/dummy" 
export DOCKER_MACHINE_NAME="dummy" 

ताकि आप आईपी मिलती है: 192.168.99.100

तो 192.168.99.100:4000 पर जाते हैं, के रूप में ip:your_port

1

आप अपने पृष्ठ इस तरह सबसे पहले कॉल करने के लिए एक सही पता प्राप्त कर सकते हैं, से कंटेनर आईडी लगता है:

$ docker ps 

आप इस तरह की जानकारी मिल जाएगा:

CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS       NAMES 
56dd4d582b08  abc01    "python app.py"  10 minutes ago  Up 11 minutes  80/tcp, 0.0.0.0:80->4000/tcp flamboyant_bell 

अब आप बंदरगाह पता: 4000 ताकि पता इस तरह होना चाहिए:

http://192.168.99.100:4000/ 

हालांकि, दोबारा जांचना कर सकते हैं:

$ docker port 56dd4d582b08 

आप इस मामले में निम्नलिखित जानकारी मिल जाएगा:

4000/tcp -> 0.0.0.0:80 

अब आप परियोजना देखने के लिए कोशिश कर सकते हैं

http://192.168.99.100:4000/ 
संबंधित मुद्दे