Docker bridge कंटेनर से होस्ट के प्रॉक्सी तक पहुँचना
कंटेनर से पहुँचने योग्य प्रॉक्सी पता चुनें और सार्वजनिक एंडपॉइंट को Docker होस्ट पर चल रहे प्रॉक्सी से अलग पहचानें।
सामान्य bridge नेटवर्क वाले कंटेनर में 127.0.0.1 खुद कंटेनर का loopback पता होता है। लैपटॉप के localhost पर सुनने वाला प्रॉक्सी हर कंटेनर के भीतर अपने आप नहीं सुनता।
यह एक आम अंतर समझाता है: वही प्रॉक्सी URL होस्ट के टर्मिनल में काम करता है, लेकिन कंटेनर में कनेक्शन अस्वीकार हो जाता है। हर जगह वह पता अलग नेटवर्क एंडपॉइंट दर्शाता है।
सार्वजनिक प्रॉक्सी सीधे इस्तेमाल किया जा सकता है
सेवा या HTTP प्रॉक्सी सूची से चुना गया एंडपॉइंट सचमुच पहुँचने योग्य सार्वजनिक IP है, तो उसे localhost में बदलने के बजाय वही पता एप्लिकेशन को दें:
docker run --rm \
-e HTTP_PROXY=http://203.0.113.10:8080 \
-e HTTPS_PROXY=http://203.0.113.10:8080 \
your-image
दस्तावेज़ वाला उदाहरण पता और इमेज बदलें। इमेज के भीतर प्रोग्राम को इन एनवायरनमेंट वेरिएबल का समर्थन फिर भी करना होगा; केवल वेरिएबल होने से Docker हर socket को प्रॉक्सी के ज़रिए अनुरोध में नहीं बदलता।
अगर प्रॉक्सी Docker होस्ट पर चल रहा है
होस्ट के आंतरिक पते तक पहुँचने के लिए Docker Desktop host.docker.internal देता है। समर्थित नेटिव Engine सेटअप में होस्ट मैपिंग यह प्रचलित नाम दे सकती है:
docker run --rm \
--add-host host.docker.internal=host-gateway \
-e HTTP_PROXY=http://host.docker.internal:8080 \
-e HTTPS_PROXY=http://host.docker.internal:8080 \
your-image
इससे नाम का रिज़ॉल्यूशन बदलता है; यह पोर्ट फ़ॉरवर्डिंग कमांड नहीं है। नेटिव Linux पर केवल होस्ट के loopback से बँधी सेवा होस्ट के bridge पते से अब भी पहुँच से बाहर हो सकती है। लिसनर, फ़ायरवॉल और कंटेनर के रूट को उस कनेक्शन की अनुमति देनी होगी। लिसनर बदलें तो बिना प्रमाणीकरण का खुला प्रॉक्सी बनाने के बजाय उसे उन क्लाइंट तक सीमित करें जिन्हें पहुँच चाहिए।
उसी जगह से जाँचें जहाँ एप्लिकेशन है
होस्ट पर curl का परिणाम केवल होस्ट का रूट जाँचता है। संबंधित अनुरोध कंटेनर के वातावरण से चलाकर देखें कि वह इच्छित एंडपॉइंट तक पहुँचता है या नहीं।
‘होस्ट’ का मतलब Docker Engine चलाने वाली मशीन भी है। रिमोट Engine के साथ वह ज़रूरी नहीं कि आपका लैपटॉप हो। इसलिए स्थानीय डेस्कटॉप एप्लिकेशन से कॉपी किया गया loopback IP बिना बदलाव रिमोट बिल्डर या सर्वर पर चले, इसकी संभावना खास तौर पर कम है।
इमेज डाउनलोड की समस्याएँ अलग रखें: एप्लिकेशन ऊपर वाला वातावरण इस्तेमाल कर सके, उससे पहले डेमन इमेज डाउनलोड करता है।