डॉकर रजिस्ट्री और रिपॉजिटरी के बीच अंतर


147

मैं डॉकटर रजिस्ट्रियों और रिपॉजिटरी के बीच के अंतर के रूप में उलझन में हूं। ऐसा लगता है कि डॉकर प्रलेखन दो शब्दों का परस्पर उपयोग करता है। इसके अलावा, रिपॉजिटरी को कभी-कभी छवियों के रूप में संदर्भित किया जाता है, जैसे कि यह उनके डॉक्स से:

अपनी रजिस्ट्री में एक रिपॉजिटरी को पुश करने के लिए, आपको एक छवि का नाम देना होगा या अपने कंटेनर को नामांकित छवि के लिए प्रतिबद्ध करना होगा जैसा कि हमने यहां देखा है।

अब आप इस रिपॉजिटरी को उसके नाम या टैग द्वारा निर्दिष्ट रजिस्ट्री पर धकेल सकते हैं।

आप एक रजिस्ट्री को रिपॉजिटरी कैसे धक्का दे सकते हैं? क्या आप छवि को रिपॉजिटरी में नहीं ला रहे हैं?


4
डॉकरों के चित्रों के बारे में क्या है?
चार्ली पार्कर

: छवियों खजाने बनाम के लिए stackoverflow.com/questions/31115098/...
wisbucky

1
यदि आप जानते हैं git, तो - डॉकर रजिस्ट्री (डिफ़ॉल्ट है hub.docker.com) => गिटहब ( github.com); - डॉकर रिपोजिटरी => गिट रिपोजिटरी; - डॉकर टैग => गिट रेफ (शाखा / टैग)
go2null

बेहतर मानचित्र के लिए डॉकटर टू गिट: • डॉकर रजिस्ट्री = गेट सर्वर • डॉकर रिपोजिटरी = गिट रिपोजिटरी • डॉकर टैग = गिट टैग (अधिक या कम)
साइमन वुडसाइड

जवाबों:


171

डॉकर रजिस्ट्री एक ऐसी सेवा है जो आपके डॉकटर चित्रों को संग्रहीत कर रही है।

निम्नलिखित रजिस्टरों में से एक की तरह डॉक रजिस्ट्री को तीसरे पक्ष द्वारा सार्वजनिक या निजी रजिस्ट्री के रूप में होस्ट किया जा सकता है:

या आप अपने द्वारा docker रजिस्ट्री की मेजबानी कर सकते हैं
( अधिक विवरण के लिए https://docs.docker.com/ee/dtr/ देखें)।

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

उदाहरण के लिए https://hub.docker.com/r/library/python/tags/ देखें । आधिकारिक अजगर छवि के लिए कई अलग-अलग टैग हैं, ये टैग डॉकर हब पर आधिकारिक अजगर भंडार के सभी सदस्य हैं। डॉकर हब एक डॉक रजिस्ट्री है जिसे डॉकर द्वारा होस्ट किया गया है।

अधिक जानने के लिए पढ़ें:


11
Artifactory सूची में जोड़ने के लिए एक है;) हम उपयोग करते हैं कि
buildmaestro

2
और वह आर्टिफैक्ट के लिए लिंक है - jfrog.com/confluence/display/RTF/Docker+Registry
JBaruch

1
डॉकटर में रिपॉजिटरी और छवियों के बीच अंतर क्या है?
चार्ली पार्कर

1
भंडार टैग द्वारा चिह्नित कई अलग-अलग छवियों को संग्रहीत कर सकते हैं।
नेमनजा ट्रिफ़ुनोविक

2
एक ही छवि के कई टैग होने का क्या अर्थ है?
चार्ली पार्कर

64

डॉकर का उपयोग करके पुस्तक से , कंटेनरों के साथ सॉफ्टवेयर का विकास और तैनाती

रजिस्ट्रियां, रिपॉजिटरी, छवियां और टैग

छवियों को संग्रहीत करने के लिए एक पदानुक्रमित प्रणाली है। निम्नलिखित शब्दावली का उपयोग किया जाता है:

रजिस्ट्री

छवियों की मेजबानी और वितरण के लिए जिम्मेदार एक सेवा। डिफ़ॉल्ट रजिस्ट्री डॉकर हब है।

कोष

संबंधित छवियों का एक संग्रह (आमतौर पर एक ही एप्लिकेशन या सेवा के विभिन्न संस्करण प्रदान करना)।

टैग

एक अक्षरांकीय पहचानकर्ता एक रिपॉजिटरी (जैसे, 14.04 या स्थिर) के भीतर छवियों से जुड़ा हुआ है।

इसलिए कमांड डॉकर हब रजिस्ट्री से रिपॉजिटरी के docker pull amouat/revealjs:latestभीतर नवीनतम टैग की गई छवि को डाउनलोड करेगा amouat/revealjs


1
तो क्या किसी एक छवि के लिए कई टैग हो सकते हैं?
चार्ली पार्कर

1
@ शार्ली हाँ। उदाहरण के लिए, अभी ubuntu:latestऔर ubuntu:16.04उसी के पास हैं Image ID, जिसका अर्थ है कि वे एक ही छवि के लिए केवल कई टैग हैं।
बुद्धिमानबीर

जहां यह टूट जाता है, उसके लिए प्रलेखन में है docker pull, जो भाग में पढ़ता है: "किसी विशेष छवि को डाउनलोड करने के लिए, या छवियों का सेट (यानी, एक रिपॉजिटरी) का उपयोग करें docker pull। यदि कोई टैग प्रदान नहीं किया गया है, तो डॉकर इंजन :latestडिफ़ॉल्ट के रूप में टैग का उपयोग करता है । " कैसे, फिर, एक "छवियों का एक सेट (यानी एक भंडार) डाउनलोड करेगा?" D
नेल्सन

1
यादृच्छिक जानकारी: डिफ़ॉल्ट रजिस्ट्री यूआरएल docker.io है
yosefrow

1
मैं इसे एक पेड़ की तरह कल्पना करता हूं, जिसकी जड़ें कई बच्चे हैं जिनमें कई रिपॉजिटरी हैं और इनमें से प्रत्येक रिपॉजिटरी में चित्र हैं: अपने बच्चों के रूप में टैग करें। इन स्तरों में से प्रत्येक की एक विशेष भूमिका है - एक रजिस्ट्री एक होस्टिंग स्थान की तरह है और एक रिपॉजिटरी छवियों की एक निर्देशिका है। क्या मेरी समझ सही है?
अल्ट्राबेंड्ज़

12

जानकारी को लागू करना:

  • आप आमतौर पर एक रिपॉजिटरी को एक रजिस्ट्री (और सभी चित्र जो इसका हिस्सा हैं) को धक्का देते हैं। लेकिन आप एकल छवि को एक रजिस्ट्री में धकेल सकते हैं। सभी मामलों में, आप उपयोग करते हैं docker push
  • एक छवि में एक 12-हेक्स-अंक छवि आईडी है, लेकिन इसके द्वारा भी पहचाना जाता है: namespace/repo-name:tag
  • छवि का पूरा नाम वैकल्पिक रूप से रजिस्ट्री होस्ट नाम और पोर्ट द्वारा उपसर्ग किया जा सकता है: myregistryhost:5000/namespace/repo-name:tag
  • एक सामान्य नामकरण सम्मेलन आपके रजिस्ट्री उपयोगकर्ता-नाम का उपयोग करना है, जिसे मैंने "नामस्थान" कहा है।

3
मुझे वही मिल रहा है जो आप कह रहे हैं, लेकिन तकनीकी रूप से ऐसा कुछ नहीं है image-name। प्रारूप डॉक्यूमेंट डॉक्यूमेंट केuser-name/repo-name:tag अनुसार होना चाहिए । (काश डॉकटर ने बेहतर शब्दावली का इस्तेमाल किया होता, यह बहुत भ्रामक है, और वे हर समय संगत नहीं हैं)।
समझदार

@wisbucky धन्यवाद! मैंने अपना उत्तर अपडेट कर दिया। वास्तव में प्रलेखन उस समय अच्छा नहीं था जब मैंने एक साल पहले इस प्रश्न का उत्तर दिया था। उदाहरण के लिए, वापस तो मैंने docker github repo पर एक मुद्दा बनाया क्योंकि docker शब्दकोष में "परत" और "नाम स्थान" (!) नहीं था
पाउलो मर्सन

1
और जब आप सिर्फ निमिस / डॉक-अल्पाइन-जावा जैसे कुछ डालते हैं तो डॉकटर एक सार्वजनिक रजिस्ट्री के आईपी पते को कैसे काम करता है: नवीनतम
एडम

1
Oooops -docker info |grep Registry
एडम

2

एक डोकर भंडार का एक प्यारा संयोजन है registryऔर image

docker tag foo <registry>/<image>:<tag>

के समान है

docker tag foo <repository>:<tag>

0

डॉकर रजिस्ट्री एक सेवा है, जिसे आप या तो स्वयं (ट्रस्टेड और प्राइवेट) होस्ट कर सकते हैं या आप डॉकटर हब को इस सेवा के लिए होस्ट कर सकते हैं। आमतौर पर, यदि आपका सॉफ़्टवेयर व्यावसायिक है, तो आपने इसे "निजी और विश्वसनीय" रजिस्ट्री के रूप में होस्ट किया होगा। जावा डेवलपर्स के लिए, यह कुछ हद तक मावेन आर्टिफैक्टिक सेटअप के अनुरूप है।

डॉकर रिपोजिटरी "टैग की गई" छवियों का एक सेट है। एक उदाहरण यह है कि आपने 5 टैग किए होंगेubuntu:latest छवियों :

क) नैनो संपादक (इमेज 1_टैग: v1)

बी) एक विशिष्ट सॉफ्टवेयर 1 (इमेज 1_टैग: वी 2)

ग) सूडो (छवि १_टाग: वी ३)

डी) अपाचे http डेमन (इमेज १_टाग: वी ४)

ई) टोमैट (इमेज १_टैग: वी ५)

आप उपयोग कर सकते हैं docker push उपरोक्त चित्रों में से प्रत्येक को अपनी रिपॉजिटरी में धकेलने के कमांड का । जब तक रिपॉजिटरी के नाम मेल खाते हैं, तब तक वे सफलतापूर्वक धकेल दिए जाएंगे, और आपके चुने हुए रिपॉजिटरी के तहत दिखाई देंगे और सही तरीके से टैग किए जाएंगे।

अब, आपका प्रश्न है, "तो यह रिपॉजिटरी कहां होस्ट की गई है / सेवा का प्रबंधन कौन कर रहा है"? यहीं से डॉकटर रजिस्ट्री की तस्वीर सामने आती है। डिफ़ॉल्ट रूप से आपको एक डॉकटर हब रजिस्ट्री (ओपन सोर्स) मिलेगी जिसका उपयोग आप अपने निजी / सार्वजनिक भंडार को रखने के लिए कर सकते हैं। इसलिए किसी भी संशोधन के बिना, आपकी छवियां आपके निजी रिपॉजिटरी को docker हब में धकेल दी जाएंगी। एक उदाहरण आउटपुट जब आप अपने छवि टैग को आगे बढ़ाते हैं, तो निम्नलिखित हैं:

docker@my-docker-vm:/$ docker push mydockerhub/my-helloworld-repo:my_tag
The push refers to repository [docker.io/mydockerhub/my-helloworld-repo]
bf41e934d39d: Pushed
70d93396f87f: Pushed
6ec525dfd060: Pushed
705419d10b13: Pushed
a4aaef726d02: Pushed
04964fddc946: Pushed
latest: digest: sha256:eb93c92351bce785aa3ec0de489cfeeaafd55b7d90adf95ecea02629b376e577 size: 1571
docker@my-docker-vm:/$

और यदि आप तुरंत टाइप करते हैं, docker images --digests -aतो आप पुष्टि कर सकते हैं कि आपके पुश किए गए इमेज टैग अब docker हब रजिस्ट्री द्वारा प्रबंधित निजी रिपॉजिटरी के खिलाफ नए हस्ताक्षर दिखा रहे हैं।


"डॉकटर पुश कमांड उपरोक्त छवियों में से प्रत्येक को आपकी रिपॉजिटरी में धकेलने के लिए" - आप रिपॉजिटरी में छवियों को पुश नहीं करते हैं, लेकिन रजिस्ट्रियों को रिपॉजिटरी करते हैं। या मैं गलत हूँ?
इम्पेलर

0

डॉकर हब और अन्य तृतीय पक्ष रिपॉजिटरी होस्टिंग सेवाओं को "रजिस्ट्रियां" कहा जाता है। एक रजिस्ट्री भंडार का संग्रह करती है।

चूंकि रजिस्ट्री में कई रिपॉजिटरी हो सकते हैं और रिपॉजिटरी में एक ही छवि के कई अलग-अलग संस्करण हो सकते हैं जो व्यक्तिगत रूप से टैग के साथ संस्करणित होते हैं।

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