संपादित 5 दिन पहले द्वारा ExtremeHow संपादकीय टीम
डॉकर डेस्कटॉपफोल्डर्सफ़ाइल साझा करनामेज़बानकंटेनरकॉन्फ़िगरेशनदेवऑप्ससॉफ्टवेयर विकासबादल कम्प्यूटिंगवर्चुअलाइजेशन
अनुवाद अपडेट किया गया 5 दिन पहले
डॉकर एक शक्तिशाली टूल है जिसका उपयोग एप्लिकेशन को कंटेनरों के अंदर विकसित और तैनात करने के लिए किया जाता है। कंटेनर एक अलग वातावरण होता है जहां एप्लिकेशन बिना किसी अन्य प्रक्रिया से प्रभावित हुए चल सकते हैं। डॉकर के उपयोग के दौरान, आपको ऐसी स्थिति मिल सकती है जहां आपको अपने होस्ट मशीन और डॉकर कंटेनरों के बीच फ़ाइलें या फोल्डर्स साझा करने की आवश्यकता होती है। यह गाइड आपको विस्तार और समग्र तरीके से होस्ट मशीन और डॉकर कंटेनरों के बीच फोल्डर्स साझा करने की प्रक्रिया का वर्णन करेगी। हम मूल अवधारणाओं को कवर करेंगे, उदाहरण देंगे और संभावित चुनौतियों पर नजर डालेंगे।
फोल्डर्स साझा करने के चरणों में जाने से पहले, यह समझना महत्वपूर्ण है कि डॉकर डेटा स्थायित्व को कैसे संभालता है। डॉकर कंटेनर अस्थायी होते हैं; बंद किए जाने पर उनमें संग्रहीत कोई भी डेटा खो सकता है। डॉकर डेटा का प्रबंधन और स्थायीत्व बनाए रखने के लिए विभिन्न तंत्र प्रदान करता है, और उनमें से एक प्रमुख तरीका वॉल्यूम्स के माध्यम से है। एक डॉकर वॉल्यूम एक स्थायी डेटा स्टोरेज है जिसे एक कंटेनर तक पहुंच सकता है, और यह कंटेनर के जीवनचक्र के बाहर मौजूद होता है।
डॉकर स्वतंत्र रूप से वॉल्यूम्स का प्रबंधन करता है, जिसका अर्थ है कि वे किसी विशिष्ट कंटेनर से अलग होते हैं। इससे डेटा की स्थायिता में काफी वृद्धि होती है क्योंकि यहां तक कि अगर आप एक कंटेनर हटाते हैं, तो उसके वॉल्यूम के अंदर का डेटा अप्रभावित रहता है और उसे किसी अन्य कंटेनर से जोड़ा जा सकता है। वॉल्यूम्स होस्ट और डॉकर कंटेनरों के बीच फोल्डर्स साझा करने के लिए आदर्श होते हैं क्योंकि वे कंटेनर से अपने जीवनकाल में स्वतंत्र होते हैं और उन्हें स्पष्ट रूप से नियंत्रित किया जा सकता है।
डॉकर विभिन्न उपयोग मामलों के लिए विभिन्न प्रकार के वॉल्यूम्स का समर्थन करता है:
होस्ट और डॉकर कंटेनर के बीच फोल्डर साझा करने का सबसे सरल तरीका बाइंड माउंट्स के माध्यम से है। चलिए देखते हैं इसमें शामिल चरण और एक उदाहरण:
अपने होस्ट सिस्टम पर एक डायरेक्ट्री बनाएं जिसे आप डॉकर के साथ साझा करना चाहते हैं। उदाहरण के लिए, आप /Users/username/shared
नामक डायरेक्ट्री बना सकते हैं।
इसके बाद, बाइंड माउंट को शामिल करने के लिए डॉकर रन कमांड को अपडेट करें। पथ मानचित्रण के बाद -v
या --volume
फ्लैग का उपयोग करें। उदाहरण के लिए, अपने कंटेनर में /shared
के लिए /Users/username/shared
को माउंट करने के लिए, कमांड है:
docker run -v /Users/username/shared:/shared my-image
इस उदाहरण में, my-image
से तात्पर्य उस डॉकर इमेज से है जिसे आप चला रहे हैं। यह माउंट कंटेनर के अंदर /shared
में किए गए किसी भी बदलाव को होस्ट के /Users/username/shared
फोल्डर में परिलक्षित होने की अनुमति देता है।
एक बार कंटेनर बाइंड माउंट के साथ चल रहा है, कंटेनर के अंदर /shared
में संशोधित किसी भी फाइल को होस्ट की /Users/username/shared
डायरेक्ट्री में सीधे प्रभावित करता है और इसके विपरीत।
यहां एनजीआईएनएक्स वेब सर्वर का उपयोग करते हुए होस्ट और डॉकर कंटेनर के बीच फाइलें साझा करने का एक व्यावहारिक उदाहरण है। मान लीजिए कि आप अपने होस्ट मशीन पर संग्रहित HTML फाइलों को सर्व करना चाहते हैं:
website
नामक एक डायरेक्ट्री बनाएं।website
डायरेक्ट्री के अंदर कुछ सामग्री के साथ index.html
फाइल जोड़ें।निम्न कमांड का उपयोग करें website
डायरेक्ट्री को /usr/share/nginx/html
डायरेक्ट्री में कंटेनर के अंदर बाइंड माउंट करने के लिए:
docker run --name my-nginx -v "$PWD"/website:/usr/share/nginx/html:ro -d nginx
:ro
विकल्प कंटेनर के अंदर बाइंड माउंट को केवल पढ़ने के लिए बनाता है।
वेब ब्राउज़र में http://localhost
पर जाएं ताकि एनजीआईएनएक्स द्वारा आप के होस्ट पर साझा डायरेक्ट्री से सर्व किए गए index.html
फाइल को देखा जा सके।
जबकि बाइंड माउंट्स सीधे होस्ट फाइल सिस्टम पर पथों से संबंधित होते हैं, डॉकर वॉल्यूम्स अधिक अमूर्त होते हैं और डॉकर द्वारा प्रबंधित होते हैं। चलिए सीखते हैं कि डॉकर वॉल्यूम्स कैसे बनाएँ और उपयोग करें:
एक नया वॉल्यूम बनाने के लिए docker volume create
कमांड का उपयोग करें, जैसा नीचे दिखाया गया है:
docker volume create my-volume
यह कमांड एक my-volume
नामकवॉल्यूम बनाता है जिसे डॉकर मैनेज करेगा।
बने हुए वॉल्यूम को कंटेनर से जोड़ने के लिए निम्नलिखित कमांड का उपयोग करें:
docker run -v my-volume:/app/data my-image
यह उदाहरण कंटेनर में /app/data
पर my-volume
माउंट करता है। /app/data
में लिखा गया कोई भी डेटा my-volume
में रहता है, भले ही कंटेनर को बंद या हटा दिया गया हो।
एक परिदृश्य पर विचार करें जहां आप कंटेनर के पुनः आरंभ के बावजूद एक डेटाबेस स्टोर करना चाहते हैं। आप एक वॉल्यूम का उपयोग कर सकते हैं ताकि एक डेटाबेस कंटेनर की डेटा डायरेक्ट्री को माउंट किया जा सके:
docker volume create db-data
docker run -d --name my-database -v db-data:/var/lib/mysql mysql:5.7
इस मामले में, /var/lib/mysql
डायरेक्ट्री में किसी भी डेटा परिवर्तन को db-data
वॉल्यूम में संग्रहीत किया जाता है।
यहां तक कि अगर आप my-database
कंटेनर को बंद और हटा देते हैं, db-data
वॉल्यूम डेटा को बरकरार रखता है, और इसे किसी अन्य इंस्टेंस से जोड़ने के लिए तैयार रहता है।
एक बाइंड माउंट सेट करना आसान हो सकता है, लेकिन यह समस्याग्रस्त भी हो सकता है। यहां कुछ सामान्य समस्याएं और समाधान हैं:
यह सुनिश्चित करना महत्वपूर्ण है कि कंटेनर को बाइंड-माउंटेड डायरेक्ट्री तक पहुंचने की आवश्यक अनुमतियाँ हैं। अन्यथा, आपको अनुमति अस्वीकृत
त्रुटियाँ प्राप्त हो सकती हैं।
-v
पैरामीटर में प्रदान किए गए होस्ट पथ और कंटेनर पथ की दोबारा जांच करें ताकि यह सुनिश्चित हो सके कि वे सही हैं।
डॉकर डेमन होस्ट उपयोगकर्ता की तुलना में एक अलग उपयोगकर्ता के रूप में चल सकता है, जो एक्सेस अनुमतियों को प्रभावित कर सकता है। आप जरूरत के अनुसार उन्नत विशेषाधिकारों के साथ डॉकर चलाने की कोशिश कर सकते हैं या उपयोगकर्ता अनुमतियों को समायोजित कर सकते हैं।
होस्ट और डॉकर कंटेनर के बीच फोल्डर साझा करना एक आवश्यक कार्यक्षमता है जो विकास, डेटा स्थायिता और सहयोग की सुविधा देता है। यह महत्वपूर्ण है कि आप अपने उपयोग के मामले के लिए कौन सा माउंट प्रकार (बाइंड माउंट या वॉल्यूम) उपयुक्त है यह निर्णय लें। बाइंड माउंट्स आपको निर्देश पथ पर सीधे नियंत्रण देते हैं, जबकि डॉकर वॉल्यूम अधिक पोर्टेबल होते हैं और दीर्घकालिक डेटा स्थायिता के लिए प्रबंधित करने में आसान होते हैं।
यहां कुछ सर्वोत्तम प्रथाएं हैं जिन पर विचार करना चाहिए:
इन अंतर्दृष्टियों, विधियों और उदाहरणों के साथ, आप अपने होस्ट और डॉकर कंटेनरों के बीच फोल्डर साझाकरण को प्रभावी ढंग से संभालने के लिए पूरी तरह से सुसज्जित होने चाहिए। अपनी परियोजना की जरूरतों को पूरा करने के लिए तरीकों का आगे अन्वेषण करें और संशोधित करें।
यदि आपको लेख की सामग्री में कुछ गलत लगता है, आप कर सकते हैं