मैंने वॉल्यूम के लिए नाम निर्दिष्ट किए बिना डॉकर कमांड लाइन का उपयोग करके एक डॉकर छवि की कोशिश की है । अब मैंने पाया कि मैं इस कंटेनर/छवि का उपयोग जारी रखना चाहता हूं लेकिन कंटेनर को डॉकर कंपोज़ में परिभाषित करके ।
क्या है सबसे अच्छा अभ्यास अनाम/अनाम संस्करणों से डेटा रखने के लिए और डॉकर कंपोज़ द्वारा बनाए गए नए कंटेनर में उनका उपयोग करें?
क्या मैं किसी तरह अनाम को नामित वॉल्यूम में बदल सकता हूं?
या क्या मुझे नामित वॉल्यूम के साथ डॉकर कंपोज़ के साथ एक नया कंटेनर बनाना चाहिए और डेटा कॉपी करना चाहिए?
इस विधि में डॉकर एपीआई का उपयोग करने का लाभ है । यह एक हल्के लिनक्स छवि का उपयोग करता है जिसे कहा जाता है alpine और इसका डिफ़ॉल्ट शेल, ash फ़ाइल कॉपी चलाने के लिए, cp -av पुराने वॉल्यूम से नए नामित वॉल्यूम तक ।
आप वर्तमान में मौजूदा वॉल्यूम का नाम नहीं बदल सकते । (यह सच है कि क्या वे पहले नामित थे या अनाम थे और उनके नाम ऑटो-जेनरेट किए गए थे । )
आप देख सकते हैं यह मुद्दा इस सुविधा के कार्यान्वयन के बारे में अधिक जानकारी के लिए, साथ ही डेवलपर्स को यह बताने के लिए अपना "+1"/"थम्स अप" जोड़ें कि आप इसे चाहते हैं ।
इसके बिना, जहां तक मुझे पता है, ऐसा करने का एकमात्र अच्छा तरीका नया नामित वॉल्यूम बनाना और डेटा कॉपी करना है ।
इस लेखन के समय एकमात्र विकल्प डेटा की प्रतिलिपि बनाना है । विवरण आपके विशेष सेटअप के आधार पर भिन्न हो सकते हैं । किए जाने वाले चरणों की सामान्य सूची इस प्रकार है:
चरण 3 पर नया वॉल्यूम बनाने के लिए स्रोत कंटेनर को रोकें और निकालें ।
docker stop NAMEdocker rm NAME# ordocker-compose stop SERVICEdocker-compose rm SERVICE
कुछ मामलों में आप स्रोत कंटेनर को हटाने को स्थगित करने में सक्षम हो सकते हैं, उदाहरण के लिए स्विच करते समय docker-compose अनाम मात्रा के लिए docker-compose नामित मात्रा। इस मामले में up नया वॉल्यूम बनाएगा। और आप डेटा कॉपी करके आगे बढ़ सकते हैं । लेकिन इस मामले में भी कंटेनर को रोकना सलाह दी जाती है कि आप उन्हें कॉपी करते समय डेटा को बदलने से बचें । और आप के लिए स्रोत कंटेनर को दूर करने के लिए मिल गया है docker-compose नए वॉल्यूम पर स्विच करने के लिए (चेतावनियों पर ध्यान दें) ।
कुछ मामलों में इसकी वास्तव में आवश्यकता नहीं है, उदाहरण के लिए स्टैंडअलोन कंटेनरों से स्विच करते समय docker-compose.
बदलें docker-compose.yml यदि लागू हो ।
नया वॉल्यूम बनाने के लिए नया कंटेनर शुरू करें ।
स्टैंडअलोन कंटेनर:
docker run ...# ordocker-compose up -d
डेटा बदलने से बचने के लिए नए कंटेनर को रोकें ।
docker stop ...# ordocker-compose stop
एक नामित वॉल्यूम के साथ एक स्टैंडअलोन कंटेनर जैसे माइग्रेट करने के मामले में आप कंटेनर को शुरू करने/रोकने के स्थान पर वॉल्यूम बना सकते हैं ।
डेटा कॉपी करें ।
docker run --rm -v "SRC_VOLUME:/from" -v "DST_VOLUME:/to" \ bash -c ' shopt -s dotglob # rm -r /to/* # e.g. pg might have populated the new volume cp -r /from/* /to '
जहां एसआरसी_वॉल्यूम, डीएसटी_वॉल्यूम-वॉल्यूम नाम, आईडी, या होस्ट पर निर्देशिका के लिए पूर्ण पथ ।
कंटेनर उपयोग से जुड़े वॉल्यूम को सूचीबद्ध करने के लिए: