डॉकटर कंटेनर में वाइल्डफ्लाइ शुरू नहीं


10

मैं विंडोज 10 प्रो में डॉकर कंटेनर पर चल रहे वाइल्डफ्लाइ के स्वागत पृष्ठ तक पहुंचने का प्रयास कर रहा हूं। यह जो मैंने किया है:

चित्र खींच लिया:

docker pull jboss/wildfly

Wildfly कंटेनर चलाएं (यह ठीक काम करता है, Wildfly लॉग में मैं इसे सही तरीके से शुरू कर सकता हूं):

docker run -it -p 8080:8080 jboss/wildfly

कंटेनर आईडी ढूंढें:

docker ps

IP पते का निरीक्षण करें:

docker inspect -f "{{ .NetworkSettings.IPAddress }}" cac63ed21d78

IP पता है 172.17.0.2, एक ब्राउज़र में मैं http://172.17.0.2:8080/ पर जाता हूं, लेकिन ब्राउज़र हैंग हो जाता है और बाहर हो जाता है। मैं क्या खो रहा हूँ?

अपडेट करें

मैंने भी कोशिश की 127.0.0.1:8080और यह भी काम नहीं कर रहा है

UPDATE2

कंसोल लॉग:

docker --version

#Docker version 19.03.1, build 74b1e89e8a

docker run hello-world

#Hello from Docker!

docker run --detach --publish 8080:80 --name webserver nginx

#Unable to find image 'nginx:latest' locally
#latest: Pulling from library/nginx
#8ec398bc0356: Pull complete
#465560073b6f: Pull complete
#f473f9fd0a8c: Pull complete
#Digest:  sha256:b2d89d0a210398b4d1120b3e3a7672c16a4ba09c2c4a0395f18b9f7999b768f2
#Status: Downloaded newer image for nginx:latest
#c5cdb6de11240b5fe33bc424779721e1b44948797fd6ff389004d0766b71dd17

docker ps

#CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5cdb6de1124 
#nginx "nginx -g 'daemon of" 10 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp webserver

उत्तर देखें stackoverflow.com/a/43762751/7873775 और 10.0.75.1:8080 और 10.0.75.2:8080 का प्रयास करें।
एवगेनी खाइस्ट

क्षमा करें, लेकिन यह काम नहीं किया। मेरे पास डॉकटर और ब्राउज़र दोनों एक ही विंडोज 10 मशीन पर चल रहे हैं। 10.0.75.xकोई बाहरी पता नहीं है और ब्राउज़र वेब पर इसे खोजने की कोशिश करता है?
ps0604

1
ठीक है, चलो समस्या को खोजने की कोशिश करते हैं। कृपया निम्नलिखित सीएलआई कमांड के परिणाम पोस्ट करें: 1. docker --version, 2. docker run hello-world, 3. docker run --detach --publish 8080:80 --name webserver nginx, 4. फिर लोकलहोस्ट
एवगेनी खिस

कृपया कंसोल लॉग के साथ अद्यतन किया गया प्रश्न देखें। मैंने कोशिश की localhost:8080और यह समय निकल गया। docker psशोCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5cdb6de1124 nginx "nginx -g 'daemon of" 10 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp webserver
पीएस ०६०४

@ ईवगेनी खिस्ट मुझे यह लेख मिला जो डॉकटर नेटवर्किंग के बारे में बात करता है। यह कहता है कि कंटेनर के अंदर चलने वाले सर्वर को सभी इंटरफेस (लेख के अंतिम भाग) को सुनना पड़ता है, क्या यह लागू होता है?
ps0604

जवाबों:


3

डिफ़ॉल्ट रूप से, जब आप एक कंटेनर बनाते हैं, तो वह इसके किसी भी पोर्ट को बाहरी दुनिया में प्रकाशित नहीं करता है। नेटवर्क 172.17.XX आंतरिक है। अगर आपको आईपी एड्रेस को होस्ट करने के लिए -p फ्लैग के साथ आईपी डॉक कंटेनर को बांधने की जरूरत है, तो इस तरह से:

-पी 8080: 8080

डॉक होस्ट पर 8080 पोर्ट करने के लिए कंटेनर में मैप टीसीपी पोर्ट 8080


यदि बाहरी दुनिया में पोर्ट प्रकाशित नहीं होते हैं तो यह उदाहरण क्यों काम करता है?
ps0604

@ यदि आपने गलत तरीके से प्रतिक्रिया को संपादित किया है, यदि आप इस प्रश्न पर एक नज़र डालते हैं कि यह वास्तव में मैं क्या कर रहा था।
ps0604

@ ps0604 लगता है कि नेटवर्क की समस्या है। आपके मामले में फ़ायरवॉल नियमों की जाँच करें
इवान वोव

तो आपका जवाब गलत था?
ps0604

मेरा उत्तर सही है, क्योंकि यह प्रलेखन पुनर्संयोजन पर आधारित है।
इवान वोव

3

प्रेषक: https://docs.docker.com/docker-for-windows/networking/

पोर्ट अग्रेषण स्थानीयहोस्ट के लिए काम करता है; -प्रकाश, -p, या -पी सभी कार्य। लिनक्स से उजागर किए गए पोर्ट होस्ट में भेजे जाते हैं।

तो यह http: // localhost: 8080 से सुलभ होना चाहिए


यदि वह काम नहीं करता है, तो विंडोज़ उदाहरण का प्रयास करें

docker run -d -p 80:80 --name webserver nginx

जो सुलभ होना चाहिए http: // localhost: 80

https://docs.docker.com/docker-for-windows/index#explore-the-application-and-run-examples


यहां तक ​​कि अगर असफल कोशिश करता है:

docker-machine ip default

और http: // [docker-machine-ip]: 80 का उपयोग करें


1
यह लोकलहोस्ट में काम नहीं करता है: 8080, क्षमा करें
ps0604

क्या आप ऊपर दिए गए उदाहरण को देखने की कोशिश कर सकते हैं, यह देखने के लिए कि क्या यह jboss / Wildfly के साथ समस्या है या यदि आपकी विंडोज़ नेटवर्किंग है?
टायहल

और अगर nginx काम नहीं करता है, तो आप 'docker- मशीन IP डिफ़ॉल्ट' चला सकते हैं और
स्थानीयहोस्ट के

0

मुख्य जानकारी है Docker container in Windows 10 Pro- यह बहुत ही सामान्य विनिर्देश है कि विंडोज पर आपका डोकर कैसे काम करता है। दूरदराज के उदाहरणों के Docker for Windowsसाथ / बिना Linux containers, जैसे कई विकल्प हो सकते हैं Docker toolbox...।

आमतौर पर विंडोज पर डॉकटर कंटेनर किसी प्रकार की वर्चुअल मशीन (हाइपर-वी, वर्चुअलबॉक्स, ...) में चल रहे होते हैं। इसलिए अतिरिक्त नेटवर्क लेयर है, जो आपके विंडोज नेटवर्क नेमस्पेस से सीधे नहीं मिल सकती है। लेकिन जुड़ा उदाहरण लिनक्स मशीन पर चलता है, जहां यह अतिरिक्त नेटवर्क परत मौजूद नहीं है। और यही कारण है कि लिनक्स पर कॉपी / पेस्ट किए गए उदाहरण विंडोज पर काम नहीं करते हैं। इसलिए कंटेनर को हमेशा की तरह चलाएं और पोर्ट 8080 को बेनकाब करें:

docker run -it -p 8080:8080 jboss/wildfly

लेकिन आईपी के लिए उपयोग अलग होगा और कंटेनर आईपी का उपयोग नहीं किया जा सकता है, क्योंकि आंतरिक डॉकटर नेटवर्क विंडोज से सुलभ नहीं है। बल्कि अपने विंडोज ओएस के आईपी का उपयोग करने का प्रयास करें। अंततः उपयोग किए गए Docker on Windowsसमाधान के दस्तावेज़ीकरण की जांच करें और पता लगाएं कि उजागर बंदरगाहों के लिए किस आईपी का उपयोग किया जाता है।

यदि आपके पास विंडोज़ / लिनक्स नेटवर्किंग स्किल्स एडवांस हैं, तो आप किसी तरह कंटेनर नेटवर्क नेमस्पेस से पोर्ट / फॉरवर्ड पोर्ट, इंटरमीडिएट वीएम नेटवर्क लेयर से विंडोज नेटवर्क लेयर तक कर सकते हैं। लेकिन यह बहुत जटिल हो सकता है।


जनवरी, मैंने विंडोज के लिए डॉकर डेस्कटॉप स्थापित किया , छवि को डाउनलोड किया और ऊपर दिए गए ट्यूटोरियल में बताए अनुसार वाइल्डफ्लाई कंटेनर चलाया। कंसोल में मैं देखता हूं कि यह ठीक शुरू होता है, और 8080:8080यह वही है जो सिद्धांत में काम करना चाहिए, लेकिन यह नहीं करता है। मैं नेटवर्किंग के बारे में नहीं जानता, मुझे कहाँ से देखना शुरू करना चाहिए?
Ps0604

@ ps0604 यदि आप लिनक्स ट्यूटोरियल का आंख मूंदकर अनुसरण करना चाहते हैं, तो लिनक्स का उपयोग करें। जैसा कि मैंने उल्लेख किया है कि डॉक्टर आपका मित्र है - docs.docker.com/docker-for-windows/networking वहाँ स्पष्ट रूप से उल्लेख किया गया है There is no docker0 bridge on Windows: Because of the way networking is implemented in Docker Desktop for Windows, you cannot see a docker0 interface on the host. This interface is actually within the virtual machine.। कृपया उस सीमा से निपटें।
जन गरज

0

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


हां, मैं सहमत हूं, मैं विंडोज के बजाय उबंटू में कंटेनर बनाऊंगा, मुझे वहां कोई समस्या नहीं है। केवल एक चीज यह है कि मैं विंडोज में विकसित करता हूं, इसलिए मुझे तीन बार परीक्षण करना होगा, एक बार खिड़कियों में जबकि विकासशील, फिर लिनक्स कंटेनर में और अंत में जब मैं कंटेनर को क्लाउड पर अपलोड करता हूं। अगर मैं विंडोज में कंटेनर चला सकता हूं, तो मैं केवल दो बार परीक्षण करूंगा।
ps0604

यही कारण है कि मैंने लिनक्स सबसिस्टम का सुझाव दिया है .. आपको वास्तव में संदर्भ को 3 बार बदलना नहीं है, शायद 2-2.5 गुना;)
सैम थॉमस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.