Docker
एपीआई v2 के साथ डोकर निजी / सुरक्षित रजिस्ट्री
खोज…
परिचय
डॉकर हब के बजाय एक निजी और सुरक्षित डॉकटर रजिस्ट्री। बेसिक डॉकटर कौशल की आवश्यकता होती है।
पैरामीटर
आदेश | व्याख्या |
---|---|
सुडो डोकर रन-पी 5000: 5000 | डॉकटर कंटेनर शुरू करें और कंटेनर से पोर्ट 5000 को भौतिक मशीन के पोर्ट 5000 से बांधें। |
--नाम रजिस्ट्री | कंटेनर का नाम ("docker ps" पठनीयता को बेहतर बनाने के लिए उपयोग करें)। |
-v 'pwd' / certs: / certs | बाँध CURRENT_DIR / कंटेनर के भौतिक भागों पर / एक "साझा फ़ोल्डर" (जैसे फ़ोल्डर) के सिल्ट। |
-E REGISTRY_HTTP_TLS_CERTIFICATE = / certs / server.crt | हम निर्दिष्ट करते हैं कि रजिस्ट्री को शुरू करने के लिए /certs/server.crt फ़ाइल का उपयोग करना चाहिए। (एनवी चर) |
-e REGISTRY_HTTP_TLS_KEY = / certs / server.key | RSA कुंजी (server.key) के लिए भी। |
-v / रूट / चित्र: / var / lib / रजिस्ट्री / | यदि आप अपनी सभी रजिस्ट्री छवियों को सहेजना चाहते हैं, तो आपको भौतिक मशीन पर ऐसा करना चाहिए। यहां हम भौतिक मशीन पर सभी छवियों / रूट / छवियों को सहेजते हैं। यदि आप ऐसा करते हैं तो आप बिना किसी चित्र को खोए रजिस्ट्री को रोक और पुनः आरंभ कर सकते हैं। |
रजिस्ट्री: 2 | हम निर्दिष्ट करते हैं कि हम रजिस्ट्री चित्र को docker हब (या स्थानीय रूप से) से खींचना चाहते हैं, और हम «2» जोड़ते हैं क्योंकि हम रजिस्ट्री के संस्करण 2 को स्थापित करना चाहते हैं। |
टिप्पणियों
प्रमाण पत्र बनाना
RSA निजी कुंजी openssl genrsa -des3 -out server.key 4096
: openssl genrsa -des3 -out server.key 4096
Openssl को इस कदम पर एक पास वाक्यांश के लिए पूछना चाहिए। ध्यान दें कि हम बिना पास वाक्यांश के, केवल संचार और प्रमाणीकरण के लिए प्रमाण पत्र का उपयोग करेंगे। उदाहरण के लिए सिर्फ 123456 का उपयोग करें।
प्रमाणपत्र हस्ताक्षर अनुरोध जनरेट करें: openssl req -new -key server.key -out server.csr
यह कदम महत्वपूर्ण है क्योंकि आपसे प्रमाणपत्रों के बारे में कुछ जानकारी मांगी जाएगी। सबसे महत्वपूर्ण जानकारी "सामान्य नाम" है जो डोमेन नाम है, जिसका उपयोग निजी डॉकटर रजिस्ट्री और अन्य सभी मशीन के बीच संचार के लिए किया जाता है। उदाहरण: mydomain.com
RSA निजी कुंजी से पास वाक्यांश निकालें: cp server.key server.key.org && openssl rsa -in server.key.org -out server.key
जैसा कि मैंने कहा कि हम पास वाक्यांश के बिना प्रमाणपत्र पर ध्यान केंद्रित करेंगे। इसलिए अपनी सभी प्रमुख फाइलों (.key, .csr, .crt) से सावधान रहें और उन्हें सुरक्षित स्थान पर रखें।
स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करें: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
अब आपके पास दो आवश्यक फाइलें, server.key और server.crt हैं , जो निजी रजिस्ट्री प्रमाणीकरण के लिए आवश्यक हैं।
स्व-हस्ताक्षरित प्रमाण पत्र के साथ रजिस्ट्री चलाएं
निजी रजिस्ट्री (सुरक्षित रूप से) चलाने के लिए आपको एक स्व-हस्ताक्षरित प्रमाण पत्र उत्पन्न करना होगा, आप इसे उत्पन्न करने के लिए पिछले उदाहरण का उल्लेख कर सकते हैं।
अपने उदाहरण के लिए मैंने server.key और server.crt को / root / certs में डाला
डॉक कमांड चलाने से पहले आपको उस निर्देशिका में रखा जाना चाहिए (जिसमें cd
उपयोग करें) जिसमें सीरट्स फ़ोल्डर है। यदि आप नहीं हैं और आप कमांड चलाने की कोशिश करते हैं तो आपको एक त्रुटि मिलेगी
स्तर = घातक संदेश = "खुली / अनुष्ठान / अवलोकनकर्ता। कोई ऐसी फ़ाइल या निर्देशिका नहीं"
जब आप (मेरे उदाहरण में cd /root
) हैं, तो आप मूल रूप से सुरक्षित / निजी रजिस्ट्री का उपयोग शुरू कर सकते हैं: sudo docker run -p 5000:5000 --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt -e REGISTRY_HTTP_TLS_KEY=/certs/server.key -v /root/Documents:/var/lib/registry/ registry:2
कमांड के बारे में स्पष्टीकरण पैरामीटर्स भाग पर उपलब्ध है।
डॉक क्लाइंट से खींचो या धक्का दो
जब आपको एक काम करने वाली रजिस्ट्री मिलती है तो आप उस पर चित्र खींच सकते हैं या धकेल सकते हैं। उसके लिए आपको अपने docker क्लाइंट पर एक विशेष फ़ोल्डर में server.crt फ़ाइल की आवश्यकता है। प्रमाणपत्र आपको रजिस्ट्री के साथ प्रमाणित करने और फिर संचार को एन्क्रिप्ट करने की अनुमति देता है।
अपने क्लाइंट मशीन पर रजिस्ट्री मशीन से /etc/docker/certs.d/mydomain.com/000/ पर server.crt की प्रतिलिपि बनाएँ। और फिर इसे ca-certificate.crt में बदल दें। mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt
इस बिंदु पर आप अपनी निजी रजिस्ट्री से चित्र खींच या खींच सकते हैं:
पूर्ण: docker pull mydomain.com:5000/nginx
या
धक्का दें :
- Hub.docker.com से एक आधिकारिक छवि प्राप्त करें: docker
docker pull nginx
- निजी रजिस्ट्री में धकेलने से पहले इस छवि को टैग करें:
docker tag IMAGE_ID mydomain.com:5000/nginx
(IMAGE_ID प्राप्त करने के लिए dockerdocker images
का उपयोग करें) - छवि को रजिस्ट्री में पुश करें:
docker push mydomain.com:5000/nginx