समस्या यह है कि Dockerfile पोस्टग्रेज "/ var/lib/postgresql/data" को वॉल्यूम के रूप में घोषित करता है। यह एक सामान्य निर्देशिका है जो छवियों द्वारा उपयोग की जाने वाली यूनियन फाइल सिस्टम के बाहर रहती है। वॉल्यूम तब तक जीवित रहते हैं जब तक कि कोई कंटेनर उनसे लिंक न हो जाए और उन्हें स्पष्ट रूप से हटा दिया जाए।
आपके पास कुछ विकल्प हैं:
--volumes-from
का उपयोग करें नए कंटेनरों के साथ डेटा साझा करने का आदेश। यह केवल तभी काम करेगा जब एक समय में केवल एक चल रही छवि पोस्टग्रेज हो, लेकिन यह सबसे अच्छा समाधान है।- अपना खुद का डॉकरफाइल लिखें जो वॉल्यूम घोषित करने से पहले डेटा बनाता है। कंटेनर बनने पर इस डेटा को वॉल्यूम में कॉपी किया जाएगा।
- एक एंट्रीपॉइंट या cmd स्क्रिप्ट लिखें जो रन टाइम पर डेटाबेस को पॉप्युलेट करता है।
इन सभी सुझावों के लिए आपको कंटेनर के चलने के बाद डेटा को प्रबंधित करने के लिए वॉल्यूम का उपयोग करना होगा। वैकल्पिक रूप से, आप अपना खुद का डॉकरफाइल लिख सकते हैं और केवल वॉल्यूम घोषित नहीं कर सकते हैं। फिर आप docker commit
. का उपयोग कर सकते हैं डेटा जोड़ने के बाद एक नई छवि बनाने के लिए। यह शायद अल्पावधि में काम करेगा, लेकिन निश्चित रूप से ऐसा नहीं है कि आपको कंटेनरों के साथ कैसे काम करना चाहिए - यह दोहराने योग्य नहीं है और आप अंततः यूनियन फाइल सिस्टम में परतों से बाहर हो जाएंगे।
अधिक जानकारी के लिए कंटेनरों में डेटा प्रबंधन पर आधिकारिक डॉकर दस्तावेज़ देखें।