डिफ़ॉल्ट डॉक रजिस्ट्री को docker.io से मेरी निजी रजिस्ट्री में कैसे बदलें?


124

डिफ़ॉल्ट रूप से, यदि मैं आदेश जारी करता हूं:

sudo docker pull ruby:2.2.1

यह डिफ़ॉल्ट रूप से docker.io सरकारी साइट से खींच जाएगा।

Pulling repository docker.io/library/ruby

मैं इसे अपनी निजी रजिस्ट्री में कैसे बदल सकता हूं। इसका मतलब है कि अगर मैं जारी करता हूं

sudo docker pull ruby:2.2.1

यह मेरी अपनी निजी रजिस्ट्री से खींचेगा, आउटपुट कुछ इस तरह है:

Pulling repository my_private.registry:port/library/ruby

आप इसे काम करने के लिए एक रास्ता खोजने में सक्षम थे? मैं ठीक उसी चीज की तलाश में था। मैं अपने docker निजी रजिस्ट्री के रूप में सांठगांठ का उपयोग कर रहा हूं। मैं अपने डोमेन नाम और पोर्ट नंबर का उपयोग अपने डॉक पुल कमांड में नहीं करना चाहता।
दिनेश

जवाबों:


56

अद्यतन: आपकी टिप्पणी के बाद, वर्तमान में डिफ़ॉल्ट रजिस्ट्री को बदलना संभव नहीं है, अधिक जानकारी के लिए इस मुद्दे को देखें ।

आपको ऐसा करने में सक्षम होना चाहिए, मेजबान और बंदरगाह को अपने स्थान पर प्रतिस्थापित करना:

docker pull localhost:5000/registry-demo

यदि सर्वर दूरस्थ है / है तो आपके पास सर्वर के साथ लॉग इन करने की आवश्यकता हो सकती है:

docker login https://<YOUR-DOMAIN>:8080

फिर चल रहा है:

docker pull <YOUR-DOMAIN>:8080/test-image

14
docker pull <YOUR-DOMAIN>:8080/test-imageठीक था। लेकिन मैं जो चाहता docker pull test-imageहूं, वह है कि DOMAIN और पोर्ट को बिना और लॉगिन के बिना कौन सा है।
मेनफ्रेमर

2
मैंने आपकी टिप्पणी के आधार पर अपना उत्तर अपडेट कर दिया है। यह वर्तमान में एक डिफ़ॉल्ट रजिस्ट्री सेट करने के लिए संभव नहीं है
लड़के

यह संभव नहीं है कि कभी भी एक अलग डिफ़ॉल्ट रजिस्ट्री सेट करने के लिए संभव हो, यह डिफ़ॉल्ट नाम स्थान को तोड़ने के कारण है कि ज्यादातर छवियां भरोसा करती हैं
मैट

वे @scopesnpm की तरह कुछ कर सकते हैं मौजूदा के साथ संघर्ष के बिना नए नामस्थान शुरू करने के लिए। छवि के नाम में शामिल रजिस्ट्री होस्टनाम होने से रजिस्ट्री कैशिंग / एक कंपनी या परियोजना के अंदर बंद / बंद हो जाता है। : यह अच्छी तरह से यह वर्णन informit.com/articles/article.aspx?p=2464012&seqNum=3
अलेक्जेंडर Klimetschek

यह पीआर उस विषय की सबसे हालिया चर्चा लगती है: github.com/moby/moby/pull/34319
अलेक्जेंडर क्लिमेत्स्क

21

यह पता चला है है वास्तव में संभव है, लेकिन वास्तविक डोकर सीई या ई संस्करण का उपयोग नहीं।

आप या तो d --add- रजिस्ट्री ’ध्वज के साथ डॉक के रेड हैट कांटे का उपयोग कर सकते हैं या आप अपने स्वयं के हार्ड-कोडित डिफ़ॉल्ट रजिस्ट्री नेमस्पेस / इंडेक्स का उपयोग करने के लिए संशोधित रजिस्ट्री / config.go के साथ स्रोत से खुद docker का निर्माण कर सकते हैं।


3
रेडहैट का कांटा सेंटो-एक्स्ट्रा में उपलब्ध है। मुझे यह समझने में मदद करने के लिए धन्यवाद कि docker.io संस्करण पर स्विच करने के बाद --add-registryकाम करना क्यों बंद कर दिया।
चुतज

2
आप --block-registry index.docker.ioडिफ़ॉल्ट रजिस्ट्री से छुटकारा पाने के लिए विकल्प का उपयोग भी कर सकते हैं ।
इवान

1
--add-registry पुल अनुरोध किया गया था का विलय नहीं किया । इस सुविधा को अंततः अस्वीकार कर दिया गया ( # 11816 )।
फ्रैंकलिन पिआट

9

यदि आप फ़ेडोरा डिस्ट्रो का उपयोग कर रहे हैं, तो आप फ़ाइल को बदल सकते हैं

/etc/containers/registries.conf

डोमेन docker.io जोड़ना


इस redhat विशिष्ट कॉन्फ़िगरेशन फ़ाइल के साथ dockerd प्रारंभ करने के लिए उपयोग किया जाता है --add-registry। डॉकटर द्वारा पुल अनुरोध में विलय नहीं किया गया था, यह सुविधा नहीं अपनाई जाएगी । (यह सुविधा भी अंततः अस्वीकार कर दी गई थी ( # 11816 )
फ्रैंकलिन

6

ऐसा लगता है कि समुदाय के भीतर पैदा हुए विखंडन के कारण इसका समर्थन नहीं किया जाएगा (यानी दो उपयोगकर्ताओं को अलग-अलग चित्र खींचना होगा ubuntu:latest)। आपको बस छवि नाम के सामने होस्ट को जोड़ना होगा। देखिए यह गितुब मुद्दाचर्चा में शामिल होने के लिए को ।

(ध्यान दें, यह एक ओछी टिप्पणी के रूप में अभिप्रेत नहीं है, केवल चर्चा के संक्षिप्त सारांश का उल्लेख किया गया है जो उल्लेखित मुद्दे पर अनुसरण किया जा सकता है।)


10
विखंडन हाँ, लेकिन सिर्फ लिनक्स के शुरुआती दिनों के साथ अंततः केवल तीन बन गए (स्रोत आधार [आर्क, जेंटू, स्लैक्स, ...], डेबियन आधारित [डेबियन / ubuntu], और रेडहैट आधारित [एंटरप्राइज़ लिनक्स, आरएचएल, सेंटोस]। सुरक्षा के दृष्टिकोण से बेहतर होगा कि डिफ़ॉल्ट अपस्ट्रीम रजिस्ट्री को कुछ स्वयं में बदलने में सक्षम हो।
ड्वाइट स्पेंसर

2
"केवल तीन लिनेक्स, रेडहैट, डेबियन और स्रोत हैं" यह कहना कि "केवल तीन खोज प्रदाता हैं: Google, bing, और अन्य सभी खोज प्रदाता" ...
क्रिस ब्राउन ने

4

मैंने /etc/docker/daemon.json में निम्नलिखित विकल्प जोड़ने की कोशिश की। (मैं CentOS7 इस्तेमाल किया)

"add-registry": ["192.168.100.100:5001"],
"block-registry": ["docker.io"],

उसके बाद, docker डेमन को पुनः आरंभ किया। और यह docker.io के बिना काम कर रहा है। मुझे उम्मीद है कि यह कोई मददगार होगा।


यह कॉन्फ़िगरेशन RedHat के लिए विशिष्ट है। --add-registry पुल अनुरोध किया गया था का विलय नहीं किया
फ्रैंकलिन पिअत

2

डॉक आधिकारिक स्थिति को अंक # 11815 में समझाया गया है :

समस्या 11815: पुल कमांड में प्रयुक्त डिफ़ॉल्ट रजिस्ट्रियों को निर्दिष्ट करने की अनुमति दें

संकल्प:

जैसा कि पहले बताया (# 11815), यह नामस्थान को टुकड़े टुकड़े कर देगा , और समुदाय को बहुत बुरी तरह से चोट पहुंचाएगा, जिससे डॉकटरफाइल्स अब पोर्टेबल नहीं होंगे।

[अनुचर] इस कारण से इसे बंद कर देगा।

रेड हैट का एक विशिष्ट कार्यान्वयन था जिसने इसे अनुमति दी (देखें anwser, लेकिन इसे डॉकर अपस्ट्रीम प्रोजेट द्वारा मना कर दिया गया था )। यह --add-registryतर्क पर निर्भर करता था, जिसे /etc/containers/registries.confRHEL / CentOS 7 में सेट किया गया था ।


1

इस का प्रयोग कर प्राप्त किया जा सकता है DOCKER_OPTSमें /etc/default/dockerकॉन्फ़िग फ़ाइल जो उबंटू 14:04 पर काम किया और कुछ था मुद्दों उबंटू 15:04 पर। निश्चित नहीं है कि यह तय किया गया है।

नीचे की पंक्ति /etc/default/dockerको होस्ट पर फ़ाइल में जाने की जरूरत है जो डॉक डेमॉन चलाता है। निजी रजिस्ट्री में परिवर्तन बिंदु आपके स्थानीय नेटवर्क में स्थापित है। नोट: आपको इस परिवर्तन के बाद docker सेवा को पुनः आरंभ करना होगा।

DOCKER_OPTS="--insecure-registry <priv registry hostname/ip>:<port>"

11
'--Insecure-रजिस्ट्री' ध्वज डॉक टीकेएस प्रमाणीकरण के बिना नामित रजिस्ट्री से खींचने के लिए अनुमति देता है। जब कोई निर्दिष्ट नहीं होता है तो यह एक डिफ़ॉल्ट रजिस्ट्री स्थापित करने की दिशा में कुछ भी नहीं करता है।
योशिय्याह

0

मैं गाइ द्वारा दिए गए मूल उत्तर को जोड़ रहा हूं जो आज भी मान्य है (जल्द ही 2020)।

डिफ़ॉल्ट docker रजिस्ट्री को ओवरराइड करना, जैसे आप करेंगे maven, वास्तव में एक अच्छा अभ्यास नहीं है।

उपयोग करते समय maven, आप अपने स्थानीय भंडार प्रबंधन प्रणाली के माध्यम से मावेन सेंट्रल रिपॉजिटरी से कलाकृतियों को खींचते हैं जो एक प्रॉक्सी के रूप में कार्य करेगा। ये कलाकृतियाँ सादा, कच्ची लिबास (जार) हैं और यह काफी संभावना नहीं है कि आप जार को उसी नाम से आगे बढ़ाएंगे।

दूसरी ओर, डॉकरों की छवियां पूरी तरह से चालू हैं, चलने योग्य हैं, वातावरण हैं, और डॉकटर हब से एक छवि को खींचने के लिए पूरी तरह से समझ में आता है, इसे संशोधित करें और इस छवि को अपने स्थानीय रजिस्ट्री प्रबंधन प्रणाली में उसी नाम से धक्का दें, क्योंकि यह ठीक है इसका नाम क्या है, यह आपके उद्यम के संदर्भ में है। इस मामले में, दो छवियों के बीच एकमात्र अंतर ठीक इसका रास्ता होगा !!

इसलिए निम्नलिखित नियम निर्धारित करने की आवश्यकता: एक छवि का उपसर्ग इसकी उत्पत्ति को इंगित करता है; डिफ़ॉल्ट रूप से यदि किसी चित्र में उपसर्ग नहीं है, तो इसे डॉकर हब से खींचा जाता है।


ठीक इसी कारण से मावेन रिपॉजिटरी स्टोरेज बाय डिफॉल्ट ओवरराइटिंग की अनुमति नहीं देता है और क्लासिफायर ऑफर करता है। इसी तरह डॉकटर टैग का उपयोग करता है।
coz

-5

कोशिश नहीं की है, लेकिन हो सकता है के /etc/hostsलिए hub.docker.comया कुछ इसी तरह ( docker.io)?


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