डॉकर टूलबॉक्स - लोकलहोस्ट काम नहीं कर रहा है


100

इसलिए मैं डॉकर टूलबॉक्स का उपयोग कर रहा हूं क्योंकि मेरी मशीन पर हाइपर-वी नहीं है क्योंकि यह विंडोज 10 प्रो नहीं है। सब कुछ ठीक काम करने लगता है, लेकिन जब मैं अपने ब्राउज़र पर जाने की कोशिश करता हूं तो 0.0.0.0:80यह हमेशा मुझे लौटा देता है: इस साइट तक नहीं पहुंचा जा सकता है

लेकिन जब मैं कमांड चलाता हूं: docker container psमुझे निम्नलिखित मिलता है: 0.0.0.0:80->80/tcpजिसका अर्थ है कि यह पता काम करना चाहिए। मैं stackoverflow और github मुद्दों पर खोज की। अब मैं फंस गया हूं।

क्या मैं कुछ भूल रहा हूँ?

धन्यवाद, निशान

संपादित करें:

docker-machine ip defaultमुझे रिटर्न का उपयोग करना 192.168.99.100। मैं इसे पोर्ट 80 पर चलाता हूं। मुझे अभी भी वही परिणाम मिलता है, सिवाय इसके कि पता कंटेनर आईडी बन जाए:https://fd677edg12

मैं अपने ipv4 को खोजने के लिए cmd पर उस कमांड को चलाता हूं cmd /k ipconfig /all:। परिणाम पोर्ट के साथ रखो और यह एक ही बात लौटाता है:https://fd677edg12


1
0.0.0.0 एक वास्तविक पता नहीं है, इसका मतलब है कि बंदरगाह डॉकर्स होस्ट (आपके विंडोज़ कंप्यूटर) इंटरफेस के सभी के लिए बाध्य था।
स्थानीयहोस्ट की

@fvu मुझे अभी भी "इस साइट तक नहीं पहुँचा जा सकता है"। मैंने भी कोशिश की docker-machine default ip -> 192.168.99.100तो मैंने इसे पते में डाल दिया: 192.168.99.100:80मुझे अभी भी वही रिजल्ट मिलता है।
मार्क

1
यदि आप पुनर्निर्देशित हो रहे हैं - यह आपका ऐप है जो टूट गया है। एक ही कंप्यूटर पर
डॉकटर

जवाबों:


179

Docker Toolbox को Windows के लिए Docker जितनी अधिक उपयुक्तता नहीं मिलती है, लेकिन आप होम संस्करण पर होने के बाद से इसका उपयोग करने में सही हैं।

टूलबॉक्स में, कुछ भी नहीं होगा localhost, और 192.168.99.100डिफ़ॉल्ट रूप से होगा, क्योंकि यह वर्चुअलबॉक्स में लिनक्स वीएम चल रहा है।

तो अगर तुम दौड़ो docker run -p 80:80 nginx

(नोटिस मुझे 192.168.99.100उस पोर्ट पर सुनने के लिए एक पोर्ट प्रकाशित करना था )

तब जाकर http://192.168.99.100काम करना चाहिए।


जवाब के लिए धन्यवाद। मैं आपके कदमों को छोड़कर जोड़ रहा हूँ docker run -p 80:80 -d nginx। मैं पते पर जाता हूं और यह मुझे उस पर पुनर्निर्देशित करता है https://dev/, फिर से यह कहता है कि साइट तक नहीं पहुंचा जा सकता है। मैं यह भी सत्यापित करना चाहता था कि मेरे पास कुछ भी hostsफाइल है (हालांकि मुझे पता है कि यह लोकलहोस्ट नहीं है)। मैंने वहां सब कुछ टिप्पणी की।
मार्क

कई प्रयासों के बाद, मुझे आखिरकार यह काम मिल गया। दुख की बात यह है कि मुझे इस बात पर भी यकीन नहीं है कि समस्या क्या थी।
मार्क

1
बोनस की जानकारी: डॉकर टूलबॉक्स (विंडोज 7, 8, 8.1 और 10 होम में इस्तेमाल किया गया) वास्तव में सिर्फ एक स्टार्टअप स्क्रिप्ट है जो कि docker-machineक्ली से लिपटी है । आप यह docker-machine --helpदेखने के लिए उपयोग कर सकते हैं कि आप VirtualBox VM को प्रबंधित करने के लिए क्या कर सकते हैं (या अधिक बनाएँ)।
ब्रेट फिशर

64

मैंने शुरुआत में अपने अनुप्रयोगों को लोकलहोस्ट पर एक्सेस करने के साथ कुछ समस्याएँ की थीं: 8080 डॉकटर टूलबॉक्स और ओरेकलवी वर्चुअलबॉक्स का उपयोग करते हुए।

VirtualBox में:

  1. उपयुक्त मशीन पर क्लिक करें (शायद "डिफ़ॉल्ट" लेबल वाला)
  2. समायोजन
  3. नेटवर्क> एडाप्टर 1> उन्नत> पोर्ट अग्रेषण
  4. एक नया नियम जोड़ने के लिए "+" पर क्लिक करें
  5. होस्ट पोर्ट सेट करें 8080 और गेस्ट पोर्ट8080 ; होस्ट आईपी और गेस्ट आईपी को खाली छोड़ना सुनिश्चित करें

कमांड चलाएँ:

docker run -p 8080:8080 ${image_id}

रिमोट एपीआई पर कॉर्स सेटअप के कारण, मुझे लोकलहोस्ट: 8080 के रूप में चलना होगा। इतना महान यह बहुत आसान है, धन्यवाद!
फजी

1
गजब का। हर जगह यह कहा जा सकता है लेकिन यह नहीं है।
सुपरप्रेशहैकरकेड

यह भी सुनिश्चित करें कि आप इस पोर्ट पर पहले से ही या अन्य होस्टहोस्ट / लोकलहोस्ट / 127.0.0.1 प्रविष्टियों को अपनी मेजबानों फ़ाइल ( C:\Windows\System32\drivers\etc\hosts) में सुनने के साथ चीजों को गड़बड़ नहीं करते हैं - मुझे इसके लिए काम करने से पहले दोनों की जांच
करनी होगी

आकर्षण की तरह काम किया!
डग्गी ब्लांक्स - डगलस मंगी

43

मैं https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell में विंडोज़ ट्यूटोरियल के लिए docker का अनुसरण कर रहा था और वेब ब्राउज़र में nginx का परीक्षण करते समय चरण 6 में फंस गया। । लगता है कि मुझे भी इसी तरह की समस्या का सामना करना पड़ा क्योंकि मैं भी विंडोज होम का उपयोग करता हूं और हाइपर-वी नहीं है। मेरा वर्कअराउंड काफी सरल है:

  1. अपने docker IP डिफ़ॉल्ट की जाँच करें

$ डोकर-मशीन आईपी डिफ़ॉल्ट

192.168.99.100

  1. पोर्ट फ़ॉरवर्डिंग के लिए सेट करने के लिए Oracle वर्चुअल मशीन पर जाएँ। सुनिश्चित करें कि नेटवर्क सेटिंग NAT है, और पोर्ट अग्रेषण जोड़ें। होस्ट आईपी: 127.0.0.1, गेस्ट आईपी: 192.168.99.100, पोर्ट सभी इस तरह से 80 पर सेट है

  2. अपने ब्राउज़र पर पुनः प्रयास करें और http: // localhost या http://127.0.0.1 चलाएं (पोर्ट 80 भी जोड़ सकते हैं)। इसे चलाना चाहिए।

बात यह है कि nginx IP का मतलब डॉक वर्चुअल मशीन के भीतर पहुँच योग्य होना है, ताकि हमें होस्ट मशीन के ब्राउज़र में इसे सीधे एक्सेस करने के लिए उस पोर्ट फोरवाडिंग सेटिंग की आवश्यकता हो।


2
मुझे एक मामले की जरूरत थी जब HOST:CONTAINERबंदरगाह अलग हों, जैसे docker run --detach --publish 8081:80 --name webserver nginx। पाया कि इस मामले में मुझे HOSTकेवल पोर्ट को फॉरवर्ड करना था , अर्थात वर्चुअलबॉक्स सेटिंग्स में Host IP=127.0.0.1; Host Port=8081; Guest IP=192.168.99.100; Guest Port=8081, 80जैसा कि मैंने पहले माना था। दिखता आगे कंटेनर बंदरगाह से डोकर टूलबॉक्स डोकर के साथ अपने विंडोज 7 मशीन में चाहते 80करने के लिए 192.168.99:8081और से मैं आगे 192.168.99:8081के लिए localhost:8081क्योंकि 192.168.99:8081वेब ब्राउज़र में कुछ भी नहीं दिखाता है।
1

आप एक जीवन रक्षक हैं, धन्यवाद, कृपया
muwonge nicholus

13

आप localhostनिर्देशों का पालन करके '192.168.99.100' के बजाय उपयोग कर सकते हैं :

चरण # 01:

docker-machine ip default

आपको डिफ़ॉल्ट IP दिखाई देगा

चरण # 02:

docker-machine stop default

चरण # 03:

  1. वर्चुअलबॉक्स प्रबंधक खोलें (विंडोज़ में आरंभ कार्यक्रमों के लिए खोजें VirtualBox Manager)
  2. अपनी डॉक मशीन का चयन करें VirtualBox छवि (जैसे: डिफ़ॉल्ट)
  3. खुली सेटिंग्स -> नेटवर्क -> उन्नत -> पोर्ट अग्रेषण
  4. अपना ऐप नाम, इच्छित होस्ट पोर्ट और अपने अतिथि पोर्ट जोड़ें i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

चरण # 04: अब आप निम्नलिखित को क्रियान्वित करके अपनी डॉक मशीन शुरू करने के लिए तैयार हैं:

docker-machine start default

फिर बस अपना डॉकर कंटेनर शुरू करें और आप इसे लोकलहोस्ट के माध्यम से एक्सेस कर पाएंगे।

विवरण के लिए यहां एक नज़र डालें


2

localhostडॉकटर-मशीन आईपी को सीधे हिट करने के बजाय अपेक्षित पोर्ट को मैप करने के लिए , आप वर्चुअलबॉक्स सीएलआई का उपयोग कर सकते हैं।

यदि docker- मशीन VM (यहां कहा जाता है default) चल रहा है, तो इस तरह से नियम जोड़ें और हटाएं:

> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx

यदि VM नहीं चल रहा है, या आप इसे बदलने से पहले रोकना चाहते हैं:

> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start

जहां पोर्ट फॉरवर्डिंग नियम का प्रारूप है [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>

ध्यान दें कि वर्चुअलबॉक्स में, आप डॉकर मैप के होस्ट पोर्ट पर मैप करना चाहते हैं , आंतरिक कंटेनर पोर्ट से नहीं। आप होस्ट -> VM को मैप कर रहे हैं, फिर Docker VM -> कंटेनर को मैप करता है।

वर्चुअलबॉक्स डॉक्स देखें ।


1

यह IP 192.168.99.100 टाइप करने से बचने का एक और आसान तरीका है। C:\Windows\System32\drivers\etc\hostsफ़ाइल के अंत में जाएं और जोड़ें:

192.168.99.100 docker.awesome या आपकी पसंद का कोई भी नाम।

फ़ाइल को सहेजें (आपको व्यवस्थापक अधिकार रखने की आवश्यकता है ताकि आप सुनिश्चित करें कि आप फ़ाइल पर राइट क्लिक करें और इसे संपादित करते समय इसे सहेजने में सक्षम होने के लिए व्यवस्थापक के रूप में चलाएं)।

अपने चुने हुए डोमेन नाम पर जाएं, docker.awesome: 8080 इस मामले में और वहां आपके पास है।


0

बहुत परीक्षण के बाद, मैं इस बुलेटिन बोर्ड को प्राप्त करने में सक्षम था।

  1. Docker run कमांड मैंने उपयोग किया है - docker run -p 4680: 8080 --name bb बुलेटिनबोर्ड: 1.0 यहां, 4680 लोकलहोस्ट पोर्ट नंबर है। 8080 कंटेनर पोर्ट नंबर है, जिस पोर्ट पर कंटेनर सुन रहा होगा। इस पोर्ट नंबर का उल्लेख डॉक्यूफाइल में EXPOSE कमांड में किया गया है।

  2. फिर, वेब-ब्राउज़र पर जाएं और 192.168.99.100:4680 टाइप करें

यहाँ, 192.168.99.100 docker मशीन IP एड्रेस है (कमांड का उपयोग करें -> docker- मशीन ip)

  1. इसके बाद, आपका ब्राउज़र पेज खुल जाना चाहिए -

यहाँ छवि विवरण दर्ज करें

आशा है कि यह आप सभी की मदद करता है !!

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