Docker
डेटा वॉल्यूम और डेटा कंटेनर
खोज…
डेटा-केवल कंटेनर
डेटा-केवल कंटेनर अप्रचलित हैं और अब इसे एक विरोधी पैटर्न माना जाता है!
योर के दिनों में, डॉकर के volume
सबकोमैंड से पहले, और इससे पहले कि नाम वाले वॉल्यूम बनाना संभव था, किसी भी कंटेनर में उनके लिए अधिक संदर्भ नहीं होने पर डॉकर ने वॉल्यूम हटा दिए। डेटा-ओनली कंटेनर अप्रचलित हैं क्योंकि डॉकर अब नामित संस्करणों को बनाने की क्षमता प्रदान करता है, साथ ही साथ विभिन्न docker volume
उपकमांड के माध्यम से बहुत अधिक उपयोगिता है। डेटा-केवल कंटेनरों को अब इस कारण से एक विरोधी पैटर्न माना जाता है।
पिछले कुछ वर्षों से वेब पर कई संसाधन एक "डेटा-ओनली कंटेनर" नामक एक पैटर्न का उपयोग करते हुए उल्लेख करते हैं, जो कि केवल एक डॉक कंटेनर है जो केवल डेटा वॉल्यूम के संदर्भ में रखने के लिए मौजूद है।
याद रखें कि इस संदर्भ में, एक "डेटा वॉल्यूम" एक डॉकर वॉल्यूम है जो होस्ट से माउंट नहीं किया गया है। स्पष्ट करने के लिए, एक "डेटा की मात्रा" एक मात्रा जिसके साथ या तो बनाया जाता है VOLUME
Dockerfile निर्देश, या का उपयोग कर -v
एक में कमांड लाइन पर स्विच docker run
, आदेश विशेष रूप से प्रारूप के साथ -v /path/on/container
। इसलिए एक "डेटा-ओनली कंटेनर" एक कंटेनर है जिसका एकमात्र उद्देश्य एक डेटा वॉल्यूम संलग्न करना है, जिसका उपयोग --volumes-from
docker run
कमांड में --volumes-from
ध्वज द्वारा किया जाता है। उदाहरण के लिए:
docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true
जब उपरोक्त कमांड चलाया जाता है, तो एक "डेटा-ओनली कंटेनर" बनाया जाता है। यह बस एक खाली कंटेनर होता है जिसमें एक डाटा वॉल्यूम जुड़ा होता है। तब इस मात्रा का उपयोग किसी अन्य कंटेनर में करना संभव था, जैसे:
docker run -d --name="mysql" --volumes-from="mysql-data" mysql
mysql
कंटेनर में अब वही वॉल्यूम है जो mysql-data
में भी है।
क्योंकि डॉकटर अब volume
सबकमांड और नामित वॉल्यूम प्रदान करता है, यह पैटर्न अब अप्रचलित है और अनुशंसित नहीं है।
volume
उपकमांड और नामित संस्करणों के साथ आरंभ करने के लिए नामांकित वॉल्यूम बनाना देखें
एक डेटा वॉल्यूम बनाना
docker run -d --name "mysql-1" -v "/var/lib/mysql" mysql
यह आदेश mysql
छवि से एक नया कंटेनर बनाता है। यह एक नया डेटा वॉल्यूम भी बनाता है, जो तब कंटेनर में /var/lib/mysql
पर माउंट करता है। यह मात्रा कंटेनर के जीवनकाल से परे बनी रहती है, इसके अंदर कोई भी डेटा मदद करता है। यह कहना है, जब एक कंटेनर को हटा दिया जाता है, तो इसके फाइल सिस्टम परिवर्तन भी हटा दिए जाते हैं। यदि एक डेटाबेस कंटेनर में डेटा संग्रहीत कर रहा था, और कंटेनर को हटा दिया जाता है, तो उस डेटा को भी हटा दिया जाता है। जब उसके कंटेनर को हटा दिया जाता है तब भी वॉल्यूम एक विशेष स्थान को बनाए रखेगा।
कई कंटेनर में एक ही वॉल्यूम का उपयोग करना संभव है --volumes-from
कमांड लाइन विकल्प से:
docker run -d --name="mysql-2" --volumes-from="mysql-1" mysql
mysql-2
कंटेनर में अब mysql-1
से डेटा वॉल्यूम जुड़ा हुआ है, पथ /var/lib/mysql
का भी उपयोग कर रहा है।