मैं सच में समझ में नहीं आता क्या यहाँ पर जा रहा है के माध्यम से एक-दूसरे डोकर कंटेनर कर्ल नहीं कर सकते। मैं तो बस केवल एक http अनुरोध, एक और डोकर कंटेनर के लिए, एक प्रकाशित बंदरगाह पर एक डोकर कंटेनर के अंदर से प्रदर्शन करने के लिए मेजबान के माध्यम से, मेजबान के सार्वजनिक आईपी, का उपयोग कर चाहते हैं।क्यों मैं मेजबान
यहाँ मेरी सेटअप है। मेरे पास मेरी देव मशीन है। और मेरे पास दो कंटेनर वाला डॉकर होस्ट मशीन है। CONT_A सुनता है और बंदरगाह पर एक वेब सेवा को प्रकाशित करता है 3000.
DEV-MACHINE
HOST (Public IP = 111.222.333.444)
CONT_A (Publish 3000)
CONT_B
मेरे देव मशीन पर (एक पूरी तरह से अलग मशीन)
मैं कर्ल कर सकते हैं बिना किसी समस्या के
curl http://111.222.333.444:3000 --> OK
जब मैं मेजबान में SSH
मैं जब मैं CONT_B
संभव नहीं है, बस समय समाप्ति के अंदर निष्पादित किसी भी problesm
curl http://111.222.333.444:3000 --> OK
बिना कर्ल कर सकते हैं। पिंग ठीक है हालांकि ...
docker exec -it CONT_B bash
$ curl http://111.222.333.444:3000 --> TIMEOUT
$ ping 111.222.333.444 --> OK
क्यों?
उबंटू 16.04, डोकर 1.12.3 (डिफ़ॉल्ट नेटवर्क सेटअप)
मैं सोच रहा हूँ इस की वजह से शायद कैसे डोकर नेटवर्किंग IPTables और ब्रिज नेटवर्क का उपयोग कर संभालती है (यहाँ वेब मेरी nginx कंटेनर का नाम है)। मुझे इसे देखना होगा, लेकिन मुझे लगता है कि आप जो आईपी पता दे रहे हैं वह शायद मेजबान से देखा गया आईपी पता है, न कि डॉकर नेटवर्क के भीतर "आंतरिक आईपी" असाइन किया गया है। कारण पिंग हल हो सकता है क्योंकि यह डॉकर होस्ट (कंटेनर नहीं) को हल करता है। लेकिन इसे प्राप्त करने का डॉकर तरीका कंटेनर ए में पोर्ट को प्रकाशित नहीं करना है बल्कि इसके बजाय ओवरले नेटवर्क https://docs.docker.com/engine/userguide/networking/ बनाना है। –
@RikNauta मैं जिस आईपी पते का उपयोग कर रहा हूं वह है ** सार्वजनिक होस्ट आईपी **। निश्चित रूप से यह हमेशा सही ढंग से हल करना चाहिए जब तक कि यह किसी भी तरह से आंतरिक डॉकर नेटवर्क से विवादित न हो। यह '104 ....' आईपी पता है। – pqvst
यह काम करना चाहिए। मेजबान पर सुनने और कंटेनर में टीसीपी कनेक्शन को आगे बढ़ाने के लिए एक उपयोगकर्तालैंड प्रॉक्सी प्रक्रिया डॉकर चलता है। डॉकर 1.11 में वही काम करता है? क्या आपके पास 'उपयोगकर्तालैंड-प्रॉक्सी' डॉकर डिमन पर गलत है? – Matt