डॉकटर कंटेनर चलाने का आईपी पता कैसे प्राप्त करें


94

मैं मैक के लिए डॉकर का उपयोग कर रहा हूं। मैं एक डोजर कंटेनर में एक नोडज आधारित माइक्रोसर्विस चला रहा हूं। मैं ब्राउज़र के माध्यम से नोड माइक्रोसेवा का परीक्षण करना चाहता हूं। डॉकटर कंटेनर चलाने का आईपी पता कैसे प्राप्त करें?


जवाबों:


115

यदि आप अपने होस्ट से कंटेनर के लिए पोर्ट मैप नहीं करना चाहते हैं तो आप कंटेनर के लिए सीधे 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>

7
आप आंतरिक आईपी के बारे में बात कर रहे हैं, और इसका सवाल से कोई लेना-देना नहीं है। आपका जवाब पाठक को सिर्फ भ्रम प्रदान करता है। चूंकि आईपी मशीन का आईपी है जहां डॉकर चल रहा है। जो सिर्फ localhost:)
डेविड गैटी

तुम गलत हो। ओपी ने कुछ भी निर्दिष्ट नहीं किया कि माइक्रोसेवा के बारे में बाहर से क्या होना चाहिए। उन्होंने केवल "ब्राउज़र के माध्यम से नोड माइक्रोसेवा का परीक्षण" कहा और यह http://172.17.0.2:anyPortमेजबान से मेरे प्रस्तावित विधि के साथ किया जा सकता है । बेशक, यदि आप होस्ट पर लोकलहोस्ट का उपयोग करके इसे एक्सेस करना चाहते हैं, तो आपको पोर्ट मैप करना होगा। देखेंगे कि ओपी क्या चाहता है।
OscarAkaElvis

3
आप कह रहे हैं कि आप होस्ट से कंटेनर के अंदर आंतरिक आईपी तक पहुंच सकते हैं? यह भौतिक असंभव है, यह पूरी तरह से एक अलग नेटवर्क है। न केवल मैंने जाँच की और हाँ, मैं अपने docker कंटेनर के 172.17.0.7 तक नहीं पहुँच सकता, फिर मुझे सभी docker दावेदार को देखने में सक्षम होना चाहिए अगर मैं अपने नेटवर्क को स्कैनर से होस्ट मशीन को स्कैन करता हूँ, और यह मामला नहीं है फिर। मुझे पता है कि यह काम नहीं करना चाहिए, मैंने परीक्षण किया कि आप क्या कहते हैं (आप कभी नहीं जानते हैं) और यह काम नहीं कर रहा है। तो शायद आपका स्पष्टीकरण एक महत्वपूर्ण हिस्सा याद आ रहा है?
डेविड गट्टी

कंटेनर मेजबान से सुलभ हैं। इसे स्वयं आज़माएं ... मैं आपको कुछ संकेत दूंगा। 1. एक रन कंटेनर डाउनलोड docker run --name struts --rm -i tomcatकरें : 2. अपने कंटेनर का आईपी प्राप्त करें (यदि आपके पास केवल एक है): docker inspect struts | grep '"IPAddress"' | head -n 13. इसे होस्ट के ब्राउज़र पर खोलें http://x.x.x.x:8080। आप Apache Tomcat का डिफ़ॉल्ट पृष्ठ देख सकते हैं।
ऑस्करअक्लविस

1
मैं कंटेनर में मैपिंग पोर्ट का उपयोग किए बिना वेब ऐप को एक्सेस करने में सक्षम नहीं था -p
bilal.haider

22

--formatसंपूर्ण कंटेनर जानकारी के बजाय केवल IP पता प्राप्त करने के लिए विकल्प का उपयोग करें :

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>

4
विंडोज़ में होस्ट एकल उद्धरण के बजाय दोहरे उद्धरण चिह्नों का उपयोग करते हैं। Eg sudo docker निरीक्षण --फॉर्मेट "{{.NetworkSettings.IPAddress}}" <कंटेनर आईडी या NAME> संदर्भ: लिंक
विनीत सजवान

1
कंटेनर के बारे में जानकारी के नए प्रारूप यहाँ
इगोर

18

आधुनिक डॉकटर इंजन के लिए इस कमांड का उपयोग करें:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

और पुराने इंजन उपयोग के लिए:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id

जैसा कि मूल ओपी क्षेत्र में @sanyash द्वारा टिप्पणी में उल्लेखित और जुड़ा हुआ है।
जेसी चिशोल्म


11

यदि आप इसे कंटेनर के भीतर प्राप्त करना चाहते हैं, तो आप कोशिश कर सकते हैं

ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17

5

आप अपने कंटेनर को ध्वज के साथ शुरू कर सकते हैं -P । यह आपकी छवि के उजागर पोर्ट के लिए एक यादृच्छिक पोर्ट "असाइन" करता है।

साथ docker port <container id>आप बेतरतीब ढंग से चुना बंदरगाह देख सकते हैं। तब तक पहुँच संभव है localhost:port


2

मेरे मामले के लिए, नीचे मैक पर काम किया :

मैं सीधे मैक पर कंटेनर आईपी तक नहीं पहुंच सका। मुझे 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


-2

आप उस होस्ट मशीन के बाहर से डॉकर का आईपी एक्सेस नहीं कर सकते। यदि आपका ब्राउज़र किसी अन्य मशीन पर है, तो होस्ट पोर्ट को कंटेनर पोर्ट में मैप करने के लिए बेहतर है-p 8080:8080 कमांड को चलाने के ।

पासिंग -pहोस्ट पोर्ट को आप कंटेनर पोर्ट में मैप कर सकते हैं और कहा गया है कि होस्ट किए गए पोर्ट को निर्दिष्ट कंटेनर पोर्ट के लिए सभी ट्रैफिक को फॉरवर्ड करना है।

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