डॉक वॉल्यूम कंटेनर और डॉक वॉल्यूम के बीच कैसे तय करें?


24

डॉक्स पढ़ने के बाद मैंने खुद को कुछ उलझन में पाया कि उत्पादक एप्लिकेशन / सेवा डेटा को कैसे प्रबंधित करना सबसे अच्छा है।

3 विकल्प प्रतीत होते हैं:

  1. बस होस्ट की निर्देशिका के लिए नक्शा मात्रा (यानी के लिए -vतर्क docker run)
  2. डेटा के लिए डॉक कंटेनर इमेज बनाएं (यानी अलग कंटेनर और --volumes-from)
  3. डॉक्यूमेन्ट वॉल्यूम बनाना (यानी docker volume create)

अब, ऐसा लगता है कि स्वीकृत अभ्यास # 2 विकल्प है, लेकिन फिर मुझे आश्चर्य है कि # 3 का उद्देश्य क्या है।

विशेष रूप से आप इन परिदृश्यों को सही तरीके से कैसे संभालते हैं docker volumeऔर क्या प्रत्येक स्थिति के लिए डेटा वॉल्यूम कंटेनर या इसका उपयोग करना बेहतर है?

  • आपको अपने सर्वर में एक अलग वॉल्यूम और / या स्टोरेज टियर में एप्लिकेशन डेटा की आवश्यकता है
  • समर्थन करना
  • डेटा को पुनर्स्थापित करना



# 1 उत्पादन के लिए एक गंभीर विकल्प नहीं है; यह मूल रूप से कभी नहीं किया जाना चाहिए अगर कोई विकल्प मौजूद है।
माइकल हैम्पटन

2
@Michael Hampton क्यों ?, डेटा को डॉक्यूमेंट नहीं किया जा सकता है, लेकिन होस्ट OS को अभी भी एक इंफ्रास्ट्रक्चर टीम द्वारा प्रबंधित किया जाता है जो मॉनिटर और बैकअप करता है
dukeofgaming

@dukeofgaming का उल्लेख नहीं है कि आप btrfs scrubक्षतिग्रस्त फ़ाइलों को खोजने और सही करने के लिए उस पर चल सकते हैं । मुझे यकीन नहीं है कि सामान कैसे काम करता है, लेकिन मुझे लगता है कि यह डेटा सड़ांध से रक्षा नहीं करता है, इसलिए मुझे हमेशा एक पूर्ण पुनर्स्थापना की आवश्यकता होती है यदि व्यक्तिगत फ़ाइलों को पुनर्स्थापित करने के बजाय कुछ बुरा होता है। एक अन्य ने सोचा कि यह अमूर्तता की एक और परत जोड़ता है, इसलिए यह फ़ाइल पढ़ने और लिखने को धीमा कर देता है। मुझे किसी तरह से # 2 और # 3 के फायदे नहीं दिख रहे हैं, लेकिन मुझे डॉकटर के साथ अनुभव नहीं है, इसलिए यह बदल सकता है।
inf3rno

जवाबों:


18

मुझे लगता है कि # 2 और # 3 बहुत समान हैं, मुख्य अंतर यह है कि # 3 के साथ कोई रोका हुआ कंटेनर नहीं है (यह शाब्दिक है, बस एक नामित मात्रा है)। उदाहरण के लिए, आप एक नामित वॉल्यूम बना सकते हैं और उसी तरह से कर सकते हैं जो आप के -vबजाय # 2 के साथ करेंगे ।

एक नाम मात्रा बनाएँ:

$ docker volume create --name test

एक कंटेनर से उस वॉल्यूम पर कुछ डेटा माउंट करें और लिखें:

$ docker run -v test:/opt/test alpine touch /opt/test/hello

फिर आप उसी testवॉल्यूम को दूसरे कंटेनर में माउंट कर सकते हैं और डेटा पढ़ सकते हैं:

$ docker run -v test:/opt/test alpine ls -al /opt/test     
total 8
drwxr-xr-x    2 root     root          4096 Jan 23 22:28 .
drwxr-xr-x    3 root     root          4096 Jan 23 22:29 ..
-rw-r--r--    1 root     root             0 Jan 23 22:28 hello

यहाँ लाभ यह है कि यदि आप डेटा-कन्टेनर को हटाते हैं तो वॉल्यूम गलती से गायब नहीं होगा। अब आप इसे docker volumeउप-कमांड के साथ प्रबंधित करते हैं ।

$ d volume ls
DRIVER              VOLUME NAME
local               test

यह सड़क के नीचे वॉल्यूम ड्राइवरों के लिए संभावनाएं भी खोलता है ताकि आप मेजबान (यानी एनएफएस पर नामित संस्करणों) के बीच साझा वॉल्यूम करने में सक्षम हो सकें। इसके उदाहरण Flocker और Convoy हो सकते हैं । अपने बिंदु पर विशेष रूप से डेटा ले जाने या बैकअप करने के बारे में, आपके डेटा को बैकअप करने के लिए कन्वॉय के पास विशिष्ट उप-कमांड हैं और आपके होस्ट के लिए बाहरी पर एनएफएस या ईबीएस पर भंडारण की अनुमति देता है।

इस कारण से, मुझे लगता है कि अधिक नया-स्कूल तरीका (डॉकर 1.9+) डेटा-ओनली कंटेनर के बजाय नामित वॉल्यूम का उपयोग करना है।


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

मैं एक तरह से मात्रा ड्राइवरों के उल्लेख के साथ किया था। अभी, भौतिक स्थानीय संग्रहण ड्राइवर के बाहर डेटा संग्रहीत करने के लिए, आपको एक का उपयोग करने की आवश्यकता होगी जो विशेष रूप से आपने जो करना चाह रहे हैं। मेरे सिर के ऊपर, github.com/rancher/convoy और github.com/ClusterHQ/flocker है । कॉन्वॉय के पास इस समय NFS और GlusterFS के लिए समर्थन है, जो आपके बाद के समय के करीब है। मैं इसे स्पष्ट करने के लिए उत्तर को संशोधित करूंगा।
एंडी शिन

Devicemapper ड्राइवर का उपयोग करना मेरे प्रश्न का उत्तर देता है, धन्यवाद! docs.docker.com/engine/userguide/storagedriver/…
dukeofgaming

the volume won't accidentally disappear if you remove the data-only container। क्या आप विस्तृत कर सकते हैं? धन्यवाद।
स्टीफन

22

डॉकर 1.9 के रूप में, वॉल्यूम एपीआई ( docker volume create --name mydata) के साथ नामांकित वॉल्यूम बनाना एक डेटा वॉल्यूम कंटेनर पर पसंद किया जाता है। फरवरी 2016 तक, डॉकर वॉल्यूम के दस्तावेज बहुत ही पुराने हैं। डॉकर के दोस्तों ने खुद ही सुझाव दिया है कि डेटा वॉल्यूम कंटेनरों को " अब एक अनुशंसित पैटर्न नहीं माना जाता है ," " नामांकित वॉल्यूम को डेटा-केवल वॉल्यूम को अधिकांश (यदि सभी नहीं) मामलों में बदलने में सक्षम होना चाहिए ," और " कोई कारण नहीं जिसे मैं उपयोग करने के लिए देख सकता हूं। " डेटा-केवल कंटेनर । ”

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