प्रॉक्सी के पीछे डॉकर: डेमन, निर्माण और संयोजन
Docker को तीन अलग-अलग स्थानों पर एक प्रॉक्सी की आवश्यकता होती है - वह डेमन जो इमेज खींचता है, वह निर्माण जो कमांड चलाता है, और वे कंटेनर जिन्हें आप चलाते हैं। गलत सेट करें और खींचने में विफलता होती है। यहाँ प्रत्येक, सही ढंग से परिभाषित किया गया है।
तीन परतें, तीन कॉन्फ़िगरेशन
"मैंने http_proxy सेट किया लेकिन docker pull फिर भी विफल हो रहा है" का कारण इतना सामान्य है कि Docker के पास तीन स्वतंत्र नेटवर्क संदर्भ हैं, और आपके शेल के पर्यावरण चर केवल उनमें से एक को छूते हैं। सबसे पहले, डेमन (dockerd) वास्तव में एक रजिस्ट्री से छवियों को खींचता है — यह एक सिस्टम सेवा के रूप में चलता है और अपने स्वयं के कॉन्फ़िग से अपना प्रॉक्सी पढ़ता है, आपके शेल से नहीं। दूसरे, बिल्ड प्रत्येक RUN चरण को एक अस्थायी कंटेनर के अंदर चलाता है जिसे नेटवर्क तक पहुँचने के लिए अपने स्वयं के प्रॉक्सी की आवश्यकता होती है। तीसरे, यदि इसके अंदर ऐप आउटबाउंड कॉल करता है तो चल रहा कंटेनर को प्रॉक्सी की आवश्यकता होती है।
तीनों 3128 पोर्ट पर s4m HTTP एंडपॉइंट का उपयोग करते हैं जिसमें USER:PASS प्रमाणीकरण है। डेमन और बिल्ड को कॉन्फ़िगर करने का आधुनिक तरीका Docker क्लाइंट कॉन्फ़िग फ़ाइल ~/.docker/config.json है, जो स्वचालित रूप से बिल्ड में प्रॉक्सी सेटिंग्स को इंजेक्ट करता है और docker run; डेमन स्वयं को systemd ड्रॉप-इन या Docker डेस्कटॉप सेटिंग्स के माध्यम से कॉन्फ़िगर किया जाता है। प्रॉक्सी पृष्ठ देखें; यह आपके छवियों के अंदर क्या चलता है, इसके लिए npm/yarn और pip/conda गाइड के साथ स्वाभाविक रूप से जोड़ा जाता है।
तीनों परतों को कॉन्फ़िगर करें
systemd ड्रॉप-इन के माध्यम से डेमन, docker config.json के माध्यम से बनाता और चलाता है, और एक कंपोज़ फॉलबैक। USER:PASS को बदलें।
# --- 1) DAEMON (image pulls): systemd drop-in on Linux ---
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf >/dev/null <<'CONF'
[Service]
Environment="HTTP_PROXY=http://USER:PASS@proxy.s4m.online:3128"
Environment="HTTPS_PROXY=http://USER:PASS@proxy.s4m.online:3128"
Environment="NO_PROXY=localhost,127.0.0.1,.internal"
CONF
sudo systemctl daemon-reload && sudo systemctl restart docker
# --- 2) BUILDS + RUNS: ~/.docker/config.json (injected automatically) ---
cat > ~/.docker/config.json <<'JSON'
{
"proxies": {
"default": {
"httpProxy": "http://USER:PASS@proxy.s4m.online:3128",
"httpsProxy": "http://USER:PASS@proxy.s4m.online:3128",
"noProxy": "localhost,127.0.0.1,.internal"
}
}
}
JSON
# --- 3) docker-compose fallback (per-service build args) ---
# services:
# app:
# build:
# context: .
# args:
# HTTP_PROXY: http://USER:PASS@proxy.s4m.online:3128
# HTTPS_PROXY: http://USER:PASS@proxy.s4m.online:3128डॉकर पुल और बिल्ड को काम करने के लिए प्राप्त करें
परतों को उस क्रम में ठीक करें जिसमें विफलताएँ आमतौर पर प्रकट होती हैं।
पहले डेमन को ठीक करें
यदि docker pull विफल होता है, तो डेमन रजिस्ट्री तक नहीं पहुँच सकता। HTTP_PROXY/HTTPS_PROXY के साथ systemd ड्रॉप-इन जोड़ें, फिर daemon-reload करें और docker को पुनरारंभ करें। Docker Desktop पर, सेटिंग्स में प्रॉक्सी सेट करें।
बिल्ड के लिए क्लाइंट को कॉन्फ़िगर करें
~/.docker/config.json में प्रॉक्सी ब्लॉक जोड़ें ताकि डॉकर बिल्ड और डॉकर रन प्रत्येक चरण और कंटेनर में स्वचालित रूप से प्रॉक्सी को इंजेक्ट करें - कोई Dockerfile संपादन की आवश्यकता नहीं है।
हर जगह NO_PROXY जोड़ें
हर स्तर पर NO_PROXY में localhost, 127.0.0.1 और किसी भी आंतरिक रजिस्ट्रि या सेवा होस्ट को शामिल करें, ताकि आंतरिक ट्रैफ़िक अनावश्यक रूप से प्रॉक्सी के माध्यम से बाहर न भेजा जाए।
प्रत्येक परत की पुष्टि करें
docker pull hello-world (डेमन) के साथ परीक्षण करें, एक बिल्ड जो apt-get या pip (बिल्ड) चलाता है, और एक कंटेनर जो एक IP-इको एंडपॉइंट (रनटाइम) को कर्ल करता है।
स्कोपिंग, रहस्य और ईमानदारी
दो चेतावनियाँ। पहली, प्रॉक्सी क्रेडेंशियल्स को इमेज लेयर्स से बाहर रखें। Dockerfile के अंदर प्रॉक्सी env vars सेट करने से ENV उन्हें इमेज में बेक कर देता है; इसके बजाय बिल्ड आर्ग्स या क्लाइंट config.json इंजेक्शन का उपयोग करें, ताकि क्रेडेंशियल्स बिल्ड होस्ट पर ही रहें। दूसरी, NO_PROXY के साथ सटीक रहें — एक आंतरिक रजिस्ट्री के लिए एक गायब प्रविष्टि का मतलब है कि Docker इसे बाहरी प्रॉक्सी के माध्यम से पहुँचाने की कोशिश करता है और भ्रमित करने वाले तरीके से विफल हो जाता है।
s4m का HTTP प्रॉक्सी एक प्रमाणित डेटासेंटर एंडपॉइंट है, मीटर के अनुसार भुगतान — CI बिल्डरों और DevOps होस्ट के लिए उपयुक्त है जिन्हें नियंत्रित निकासी के पीछे से छवियाँ और पैकेज खींचने की आवश्यकता होती है। यह आवासीय नहीं है, और यह एक फॉरवर्ड प्रॉक्सी है, न कि एक रजिस्ट्री मिरर या कैश; पुल-थ्रू कैशिंग के लिए, इसके साथ एक रजिस्ट्री मिरर चलाएँ। जब आपके बिल्ड बेड़े को एक अनुमति प्राप्त निकासी IP की आवश्यकता होती है, तो एक समर्पित व्यक्तिगत IP जोड़ें। कहीं भी एक 407 का मतलब है खराब प्रॉक्सी क्रेडेंशियल्स — 407 गाइड को देखें। एंडपॉइंट को उपकरणों के साथ मान्य करें।
प्रश्न, उत्तरित
क्यों docker pull विफल होता है जबकि मैंने अपने शेल में http_proxy सेट किया है?
क्योंकि छवि खींचने का कार्य डेमन द्वारा किया जाता है, आपके शेल द्वारा नहीं। HTTP_PROXY/HTTPS_PROXY के साथ systemd ड्रॉप-इन (या Docker Desktop सेटिंग्स) के माध्यम से dockerd के प्रॉक्सी को कॉन्फ़िगर करें, फिर डेमन-रीलोड करें और डॉकर को पुनः प्रारंभ करें।
मैं Dockerfile को संपादित किए बिना docker build और docker run को प्रॉक्सी कैसे करूं?
एक प्रॉक्सी ब्लॉक को ~/.docker/config.json में जोड़ें। डॉकर क्लाइंट हर निर्माण चरण और कंटेनर में स्वचालित रूप से httpProxy/httpsProxy को इंजेक्ट करता है, इसलिए कोई डॉकरफाइल परिवर्तन की आवश्यकता नहीं है।
मैं अपनी छवि से प्रॉक्सी क्रेडेंशियल्स को कैसे बाहर रखूं?
Dockerfile में ENV के साथ उन्हें सेट न करें — यह उन्हें परतों में बेक कर देता है। बिल्ड आर्ग्स या क्लाइंट config.json इंजेक्शन का उपयोग करें ताकि क्रेडेंशियल्स बिल्ड होस्ट पर रहें, शिप की गई इमेज में नहीं।
क्या s4m एक रजिस्ट्री मिरर या कैश प्रदान करता है?
नहीं। s4m एक फॉरवर्ड डेटा सेंटर प्रॉक्सी है जो आउटबाउंड ट्रैफ़िक के लिए है, न कि एक पुल-थ्रू रजिस्ट्री कैश। छवियों को कैश करने के लिए, एक रजिस्ट्री मिरर चलाएं और यदि आवश्यक हो तो इसे प्रॉक्सी के माध्यम से रूट करें।
प्रॉक्सी के पीछे खींचें और बनाएं
Docker डेमन, निर्माण और कंटेनरों को proxy.s4m.online:3128 पर प्रमाणित HTTP एंडपॉइंट के माध्यम से रूट करें। मीटर किए गए पे-एज़-यू-गो, CI अनुमति सूचियों के लिए समर्पित IP।
लोगों ने इस पृष्ठ को खोजकर पाया
- प्रॉक्सी के पीछे डॉकर
- Scrapy के साथ प्रॉक्सी का उपयोग कैसे करें
- प्रॉक्सी के पीछे डॉकर ट्यूटोरियल
- प्रॉक्सी के पीछे डॉकर सेटिंग्स
- कैसे जांचें कि प्रॉक्सी मान्य है (एक तैयार स्क्रिप्ट के साथ)
- socks5 प्रॉक्सी कैसे काम करता है
- वायरगार्ड कैसे काम करता है
- क्या प्रॉक्सी प्रमाणीकरण सुरक्षित है
- आईपी पता
- फ्री प्रॉक्सियों की उम्र कितनी होती है
- प्रॉक्सी प्रमाणीकरण
वास्तविक खोज वाक्यांश जिनका यह पृष्ठ उत्तर देता है — लिंक किए गए वाक्यांश उस पृष्ठ को खोलते हैं जो उन्हें गहराई से कवर करता है।