Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> Linux

मूल छवियों को संशोधित किए बिना डॉकर छवियों में परिवर्तनों को तुरंत स्थायी बनाएं

Docker छवियां अपरिवर्तनीय हैं। एक बार बनने के बाद, वे नहीं बदलतीं। यह स्थिरता, पूर्वानुमान और स्थिरता सुनिश्चित करता है। एक ही छवि से बनाया गया हर कंटेनर समान व्यवहार करता है, और संस्करण सुरक्षित और आसान हो जाता है। लेकिन क्या होगा यदि आपको किसी चल रहे कंटेनर के अंदर कुछ बदलने की आवश्यकता है, जैसे पैकेज इंस्टॉल करना या कॉन्फिगरेशन अपडेट करना? यहीं पर docker commit काम आता है। यह आपको एक चल रहे कंटेनर में परिवर्तनों को कैप्चर करने और मूल को छुए बिना एक नई छवि बनाने देता है। यह फिक्स का परीक्षण करने, तेजी से पुनरावृति करने, और स्क्रैच से पुनर्निर्माण के बिना कस्टम छवियों को रोल आउट करने के लिए बहुत अच्छा है।

Docker छवियां क्यों नहीं बदलतीं

Docker छवियों में कई रीड-ओनली लेयर होते हैं। जब आप एक कंटेनर चलाते हैं, तो Docker एक पतली राइटेबल लेयर को ऊपर जोड़ता है जिसे कंटेनर लेयर कहा जाता है। आपके द्वारा किए गए कोई भी परिवर्तन केवल इस शीर्ष लेयर में होते हैं। एक बार कंटेनर हटा दिए जाने के बाद, उस लेयर में सभी परिवर्तन गायब हो जाते हैं, जिससे मूल छवि अपरिवर्तित रहती है।

यह डिज़ाइन कई लाभों की गारंटी देता है:

  • एक ही छवि से हर कंटेनर समान व्यवहार करता है, स्थिरता सुनिश्चित करता है।
  • एक कंटेनर में परिवर्तन दूसरों को प्रभावित नहीं करते, पूर्वानुमान प्रदान करते हैं।
  • आप जोखिम के बिना विशिष्ट छवि संस्करणों को सुरक्षित रूप से टैग कर सकते हैं।

यह डिज़ाइन उत्कृष्ट स्थिरता प्रदान करता है, लेकिन जब आप किसी चल रहे कंटेनर में त्वरित परिवर्तन करना चाहते हैं तो यह आपको सीमित करता है। यहीं पर docker commit मदद करता है।

एक चल रहे कंटेनर से एक नई छवि बनाता है

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

मूल छवियों को संशोधित किए बिना डॉकर छवियों में परिवर्तनों को तुरंत स्थायी बनाएं

यह भविष्य में पुन: उपयोग के लिए एक कस्टम बेस सेटअप को सहेजने, परीक्षण के दौरान छोटे सुधार या कॉन्फिगरेशन परिवर्तन लागू करने, या Dockerfile को स्क्रैच से पुनर्निर्माण किए बिना अपनी टीम के साथ अपडेटेड छवियों को साझा करने के लिए आदर्श बनाता है।

आप एक चल रहे कंटेनर से एक नई छवि बनाने के लिए निम्न सिंटैक्स के साथ docker commit कमांड का उपयोग कर सकते हैं:

docker commit [OPTIONS] CONTAINER_ID NEW_IMAGE_NAME[:TAG]

यहां, CONTAINER_ID उस कंटेनर की आईडी या नाम है जिसे आप कैप्चर करना चाहते हैं, NEW_IMAGE_NAME वह नाम है जो आप नई छवि के लिए चाहते हैं, और TAG वैकल्पिक है, डिफ़ॉल्ट latest है।

नोट: docker commit docker container commit के लिए एक लिगेसी उपनाम है; दोनों समान हैं।

docker commit कमांड कई विकल्प प्रदान करता है जो आपको मेटाडेटा जोड़ने, कॉन्फिगरेशन परिवर्तन लागू करने, और कमिट प्रक्रिया के व्यवहार को नियंत्रित करने देते हैं। नीचे दी गई तालिका सभी समर्थित विकल्पों का सारांश देती है:

विकल्पलॉन्ग फॉर्मविवरणउदाहरण
-a--authorनई छवि मेटाडेटा में लेखक का नाम जोड़ता है।docker commit -a "Anees" my-container my-image
-c--changeनई छवि पर ENV, LABEL, या CMD जैसे Dockerfile निर्देश लागू करता है।docker commit -c "ENV APP_ENV=prod" my-container my-image
-m--messageछवि में किए गए परिवर्तनों का वर्णन करने वाला एक छोटा संदेश जोड़ता है।docker commit -m "Installed curl" my-container my-image
-p--pauseसंगति सुनिश्चित करने के लिए कमिट के दौरान कंटेनर को रोकता है (डिफ़ॉल्ट: true)।docker commit --pause=false my-container my-image

देखें कि docker commit कैसे काम करता है

मान लीजिए आप अपने Dockerfile को पुनर्निर्माण किए बिना Alpine कंटेनर में curl इंस्टॉल करना चाहते हैं। ऐसा करने के लिए, बेस छवि से एक कंटेनर चलाएं:

docker run -it alpine:latest /bin/sh

एक बार जब आप कंटेनर में हों, तो आवश्यक परिवर्तन करें:

apk update && apk add curl
मूल छवियों को संशोधित किए बिना डॉकर छवियों में परिवर्तनों को तुरंत स्थायी बनाएं

अब कंटेनर से बाहर निकलें:

exit

इसके बाद, कंटेनर को एक नई छवि के रूप में कमिट करें:

docker commit alpine-with-curl:1.0
मूल छवियों को संशोधित किए बिना डॉकर छवियों में परिवर्तनों को तुरंत स्थायी बनाएं

अपनी नई छवि को सत्यापित करें:

docker images

अब, आपके पास एक नई छवि है जो कहीं भी चलने के लिए तैयार है, जिसमें curl प्री-इंस्टॉल्ड है।

मूल छवियों को संशोधित किए बिना डॉकर छवियों में परिवर्तनों को तुरंत स्थायी बनाएं

अपनी नई छवि को चलाकर सहेजे गए परिवर्तनों का परीक्षण करें

अपनी नई छवि बनाने के बाद, आप यह सत्यापित करने के लिए इससे एक कंटेनर चला सकते हैं कि आपके परिवर्तन सहेजे गए हैं।

docker run -it alpine-with-curl:1.0 /bin/sh

यह कमांड alpine-with-curl:1.0 छवि पर आधारित एक कंटेनर के अंदर एक इंटरैक्टिव शेल खोलती है। अंदर जाने के बाद, आप जांच सकते हैं कि आपके संशोधन बरकरार हैं।

curl --version

यह दर्शाता है कि परिवर्तन नई छवि में स्थायी हैं।

मूल छवियों को संशोधित किए बिना डॉकर छवियों में परिवर्तनों को तुरंत स्थायी बनाएं

docker commit बनाम Dockerfile: किसका उपयोग कब करें

Dockerfile और docker commit दोनों आपको Docker छवियां बनाने देते हैं, लेकिन वे बहुत अलग तरीकों से काम करते हैं और विभिन्न स्थितियों के लिए उपयुक्त हैं।

एक Dockerfile सबसे अच्छा विकल्प है जब आपको विश्वसनीय और दोहराने योग्य बिल्ड की आवश्यकता होती है, विशेष रूप से CI/CD पाइपलाइन और उत्पादन वातावरण के लिए। यह सभी परिवर्तनों को कोड में स्पष्ट रूप से परिभाषित रखता है, जिससे उन्हें समय के साथ ट्रैक करना, समीक्षा करना और संस्करण-नियंत्रित करना आसान हो जाता है। यह दृष्टिकोण सुनिश्चित करता है कि बाद में छवि बनाने वाला कोई भी व्यक्ति समान परिणाम प्राप्त करे, जो दीर्घकालिक रखरखाव और टीम सहयोग के लिए महत्वपूर्ण है।

दूसरी ओर, docker commit त्वरित सुधार, परीक्षण, या छोटे समायोजन के लिए अच्छा काम करता है जिन्हें आप संपूर्ण Dockerfile को फिर से लिखे या पुनर्निर्माण किए बिना आज़माना चाहते हैं। यह तब उपयोगी होता है जब आप प्रयोग कर रहे हों, डीबग कर रहे हों, या किसी परिवर्तन को तुरंत मान्य कर रहे हों। हालांकि, चूंकि परिवर्तनों को किसी फ़ाइल में दस्तावेज़ नहीं किया जाता है, यह विधि उत्पादन के बजाय अल्पकालिक उपयोग के लिए बेहतर अनुकूल है।

संक्षेप में, आप docker commit का उपयोग मुख्य रूप से प्रयोग या अस्थायी सुधार के लिए कर सकते हैं। उत्पादन-तैयार छवियों के लिए, हमेशा Dockerfile को प्राथमिकता दें। Docker का अधिकतम लाभ उठाने के लिए, अन्य प्रमुख कमांड का पता लगाना उचित है जो कंटेनर, छवियों और वर्कफ़्लो के साथ काम करना आसान बनाते हैं।


  1. विंडोज 10 में रिमोट क्रेडेंशियल गार्ड से रिमोट डेस्कटॉप को सुरक्षित कैसे करें विंडोज 10 में रिमोट क्रेडेंशियल गार्ड से रिमोट डेस्कटॉप को सुरक्षित कैसे करें

    अधिकांश सिस्टम एडमिनिस्ट्रेटर्स के लिए, रिमोट डेस्कटॉप विंडोज में सबसे अधिक उपयोग की जाने वाली विशेषताओं में से एक है। जितना अच्छा यह है, हर बार जब आप Make sure that you trust this PC विकल्प चुनते हैं, तो आप अपने रिमोट डेस्कटॉप क्रेडेंशियल्स को प्रकट करके अपनी मशीन से समझौता करने का जोखिम उठा रहे है

  1. रीसेट डिस्क के बिना भूले हुए विंडोज 7 अल्टीमेट पासवर्ड को रीसेट करें - चरण-दर-चरण गाइड रीसेट डिस्क के बिना भूले हुए विंडोज 7 अल्टीमेट पासवर्ड को रीसेट करें - चरण-दर-चरण गाइड

    मैं अपना विंडोज 7 लॉगिन पासवर्ड भूल गया, मेरा विंडोज 7 अल्टीमेट संस्करण है, और मेरे पास अभी तक पासवर्ड रीसेट डिस्क नहीं है। विंडोज 7 अल्टीमेट पर रीसेट डिस्क के बिना पासवर्ड कैसे रीसेट करूं? यदि आप ऊपर वर्णित स्थितियों में से किसी में फंस रहे हैं, तो आपको यह लेख नहीं छोड़ना चाहिए जिसका उद्देश्य आपको

  1. विंडोज 10 में सिम्बोलिक लिंक्स (सिमलिंक्स) बनाने की त्वरित गाइड विंडोज 10 में सिम्बोलिक लिंक्स (सिमलिंक्स) बनाने की त्वरित गाइड

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