2014-10-11 14 views
6

मैं वेब एप्लिकेशन का परीक्षण करने के लिए एक छवि सेट अप करने के लिए डॉकरफ़ाइल लिख रहा हूं। मैं इसे ट्यूटम/लैंप छवि (https://github.com/tutumcloud/tutum-docker-lamp/blob/master/Dockerfile) पर आधारित कर रहा हूं क्योंकि यह शुरू करने के लिए एक अच्छा आधार प्रतीत होता है।डॉकर छवि में वॉल्यूम्स को "अविकसित" कैसे करें?

मेरे डॉकरफ़ाइल के हिस्से के रूप में, मैं एक MySQL डेटाबेस बनाना चाहता हूं और इसमें कुछ सामान सेट करना चाहता हूं। हालांकि, ट्यूटम/लैंप छवि VOLUME ["/etc/mysql", "/var/lib/mysql" ] घोषित करती है, इसलिए यदि मैं सही ढंग से समझता हूं, तो डॉकरफ़ाइल में MySQL डेटाबेस में किए गए कोई भी परिवर्तन जारी नहीं रहेंगे।

  • क्या मैं इसे सही ढंग से समझता हूं?

यदि हाँ,

  • वहाँ एक रास्ता करने के लिए "undeclare" उन संस्करणों ताकि उन निर्देशिकाओं सभी चीज़ों की तरह संघ फाइल सिस्टम का हिस्सा होगा है?

धन्यवाद!

+1

मैं वास्तव में एक ही चीज़ करने की कोशिश कर रहा हूं। मैंने वॉल्यूम/लैंप से वॉल्यूम संपादित किए लेकिन जब मैंने इसे बनाने की कोशिश की तो मुझे मिला: 'start-apache2.sh: ऐसी कोई फ़ाइल या निर्देशिका नहीं' – pguardiario

+0

@ पगार्डियारियो: क्या आपने ट्यूटम/लैंप गिट निर्देशिका से सभी फाइलों को क्लोन किया था ? आपको सभी सहायक फाइलों को भी न केवल डॉकरफाइल प्राप्त करने की आवश्यकता है। साथ ही, सुनिश्चित करें कि आप सही निर्देशिका में 'डॉकर बिल्ड' चलाते हैं। – Mikkel

+0

हाँ मैंने यह भी पाया। मैंने उन्हें दोनों बनाने के लिए मिला लेकिन मुझे अभी भी कंटेनर को स्थानांतरित करने में समस्याएं हैं। – pguardiario

उत्तर

3

आप वास्तव में नहीं undeclare एक मात्रा है, लेकिन आप अपने स्वयं के संस्करण का निर्माण कर सकते कर सकते हैं मूल डॉकफाइल को संशोधित करके मूल छवि का।

3

संभव नहीं एक मौजूदा कंटेनर को बदलने के लिए है, तो आप दो विकल्प हैं:

  1. Tutum कंटेनर ले लो और अपने स्वयं के संस्करण का निर्माण
  2. एक डेटा कंटेनर का उपयोग कर tutum कंटेनर के हठ का प्रबंधन करें।

डाटा कंटेनर

एक कंटेनर है कि एक डेटा मात्रा संदर्भ बनाता है बनाएँ:

docker run -d --volumes-from dbvol -p 3306:3306 tutum/mysql:5.6 
:

docker run -it --name dbvol -v /var/lib/mysql ubuntu env 

यह तो जब mysql डेटाबेस चल डेटा लागू करने के लिए इस्तेमाल किया जा सकता

डेटा तब तक जारी रहता है जब तक "dbvol" कंटेनर मौजूद न हो। यह किसी भी स्तर पर नष्ट कर दिया जा सकता है:

docker rm dbvol 

संदर्भ:

+0

उत्तर के लिए धन्यवाद। मुझे "डेटा कंटेनर" सिद्धांत से अवगत है, लेकिन मुझे नहीं पता कि मैं इसे डॉकरफ़ाइल स्क्रिप्ट के साथ कैसे उपयोग करूं? मैं एक डेटाबेस बनाना चाहता हूं और स्क्रिप्ट में इसमें कई जोड़ और बदलाव करना चाहता हूं। – Mikkel

+3

@ मिकेल फिर ट्यूटम द्वारा उपयोग की जाने वाली डॉकरफ़ाइल लें और अपनी खुद की छवि बनाने के लिए इसे स्थानीय रूप से चलाएं। डेटा के लिए स्थानीय वॉल्यूम का उपयोग प्रदर्शन के दृष्टिकोण से बहुत अधिक कुशल है (औफ धीमा है)। डेटा कंटेनर पैटर्न यह सुनिश्चित करने के लिए एक उपयोगी चाल है कि डेटा वॉल्यूम कंटेनर के साथ हटाया नहीं जाता है (वॉल्यूम केवल तभी हटा दिए जाते हैं जब सभी कंटेनर संदर्भ समाप्त हो जाते हैं) –

+0

मैं स्वयं भी उस निष्कर्ष पर आ रहा था (अपना खुद का ट्यूटम-जैसे बनाना छवि)। मैं बस सोच रहा था कि वॉल्यूम को "अव्यवस्थित" करने का कोई तरीका था या नहीं। यदि आप अपनी छवि को उत्तर के रूप में बनाने के अपने सुझाव को पोस्ट करते हैं, तो मैं इसे सही उत्तर के रूप में चिह्नित करूंगा। – Mikkel

संबंधित मुद्दे