मैं मैक के लिए डॉकर का उपयोग कर रहा हूं। मैं एक डोजर कंटेनर में एक नोडज आधारित माइक्रोसर्विस चला रहा हूं। मैं ब्राउज़र के माध्यम से नोड माइक्रोसेवा का परीक्षण करना चाहता हूं। डॉकटर कंटेनर चलाने का आईपी पता कैसे प्राप्त करें?
मैं मैक के लिए डॉकर का उपयोग कर रहा हूं। मैं एक डोजर कंटेनर में एक नोडज आधारित माइक्रोसर्विस चला रहा हूं। मैं ब्राउज़र के माध्यम से नोड माइक्रोसेवा का परीक्षण करना चाहता हूं। डॉकटर कंटेनर चलाने का आईपी पता कैसे प्राप्त करें?
जवाबों:
यदि आप अपने होस्ट से कंटेनर के लिए पोर्ट मैप नहीं करना चाहते हैं तो आप कंटेनर के लिए सीधे docker रेंज आईपी तक पहुंच सकते हैं। यह सीमा डिफ़ॉल्ट रूप से केवल आपके होस्ट से एक्सेस की जाती है। आप अपने कंटेनर नेटवर्क डेटा की जाँच कर सकते हैं:
docker inspect <containerNameOrId>
शायद फ़िल्टर करना बेहतर है:
docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1
आमतौर पर, डिफ़ॉल्ट डॉक आईपी रेंज होती है 172.17.0.0/16
। आपका मेजबान होना चाहिए 172.17.0.1
और आपका पहला कंटेनर होना चाहिए172.17.0.2
यदि सब कुछ सामान्य है और आपने किसी विशेष नेटवर्क विकल्प को निर्दिष्ट नहीं किया है।
संपादित करें "बैश ट्रिकिंग" के बजाय डॉकटर सुविधाओं का उपयोग करके एक और अधिक सुरुचिपूर्ण तरीका:
docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>
localhost
:)
http://172.17.0.2:anyPort
मेजबान से मेरे प्रस्तावित विधि के साथ किया जा सकता है । बेशक, यदि आप होस्ट पर लोकलहोस्ट का उपयोग करके इसे एक्सेस करना चाहते हैं, तो आपको पोर्ट मैप करना होगा। देखेंगे कि ओपी क्या चाहता है।
docker run --name struts --rm -i tomcat
करें : 2. अपने कंटेनर का आईपी प्राप्त करें (यदि आपके पास केवल एक है): docker inspect struts | grep '"IPAddress"' | head -n 1
3. इसे होस्ट के ब्राउज़र पर खोलें http://x.x.x.x:8080
। आप Apache Tomcat का डिफ़ॉल्ट पृष्ठ देख सकते हैं।
--format
संपूर्ण कंटेनर जानकारी के बजाय केवल IP पता प्राप्त करने के लिए विकल्प का उपयोग करें :
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>
आधुनिक डॉकटर इंजन के लिए इस कमांड का उपयोग करें:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
और पुराने इंजन उपयोग के लिए:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
यदि आप इसे कंटेनर के भीतर प्राप्त करना चाहते हैं, तो आप कोशिश कर सकते हैं
ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17
मेरे मामले के लिए, नीचे मैक पर काम किया :
मैं सीधे मैक पर कंटेनर आईपी तक नहीं पहुंच सका। मुझे localhost
पोर्ट अग्रेषण के साथ उपयोग करने की आवश्यकता है , उदाहरण के लिए यदि पोर्ट 8000 है, तोhttp://localhost:8000
Https://docs.docker.com/docker-for-mac/networking/#ogn-limitation-use-cases-and-workarounds देखें
मूल उत्तर इस प्रकार था: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949
आप उस होस्ट मशीन के बाहर से डॉकर का आईपी एक्सेस नहीं कर सकते। यदि आपका ब्राउज़र किसी अन्य मशीन पर है, तो होस्ट पोर्ट को कंटेनर पोर्ट में मैप करने के लिए बेहतर है-p 8080:8080
कमांड को चलाने के ।
पासिंग -p
होस्ट पोर्ट को आप कंटेनर पोर्ट में मैप कर सकते हैं और कहा गया है कि होस्ट किए गए पोर्ट को निर्दिष्ट कंटेनर पोर्ट के लिए सभी ट्रैफिक को फॉरवर्ड करना है।