डॉकर-मशीन पुनरारंभ पर डेटा साफ़ क्यों करता है?

मैं कर रहा हूँ का उपयोग कर डोकर Toolbox पर OSX.

मैंने लगातार डेटा संग्रहीत करने के लिए डेटा वॉल्यूम कंटेनर बनाया है: https://docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container.

मैंने जाँच की कि यह डेटा वास्तव में बूट 2 डॉकर वीएम (डॉकर-मशीन द्वारा निर्मित) पर संग्रहीत है और कंटेनर पर नहीं, ताकि यह बना रहे । हालांकि "डॉकर-मशीन पुनरारंभ" वीएम पर इस कस्टम डेटा को साफ़ करता है ।

जो हो रहा है उस पर मुझे दस्तावेज नहीं मिल रहे हैं । मुझे एक फ़ोरम पोस्ट में यह उल्लेख करते हुए पाया गया कि /वार/लिब/डॉकर में डेटा संरक्षित किया जाएगा, लेकिन मुझे यह बताते हुए कोई आधिकारिक दस्तावेज़ नहीं मिला और यह भी अजीब लगता है कि ऊपर लगातार स्टोरेज गाइड इस पथ का उपयोग नहीं करता है या यहां तक कि यह भी उल्लेख करता है कि आपका डेटा हटा दिया जाएगा ।

क्या यह अपेक्षित है और यदि ऐसा है तो क्या लगातार डेटा संग्रहीत करने के लिए सही रास्ते पर कोई आधिकारिक दस्तावेज है?


संपादित करें: असफल सेनारियो का उदाहरण जोड़ना

$ docker-machine ssh altdocker@alt:~$ docker run -v /data:/var/lib/mysql --name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello"docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"hellodocker@alt:~$ exit$ docker-machine restart altStarting VM...$ docker-machine ssh altdocker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"cat: can't open '/var/lib/mysql/hello': No such file or directory

यह निश्चित रूप से काम करना चाहिए:

$ docker-machine ssh defaultdocker@default:~$ docker run -v /data --name mydata busybox truedocker@default:~$ docker run --volumes-from mydata busybox sh -c "echo hello >/data/hello"docker@default:~$ docker run --volumes-from mydata busybox cat /data/hellohellodocker@default:~$ exit$ docker-machine restart defaultStarting VM...$ docker-machine ssh defaultdocker@default:~$ docker run --volumes-from mydata busybox cat /data/hellohello

क्या आप अपनी समस्या को पुन: उत्पन्न करने के चरणों पर अधिक विस्तार से बता सकते हैं?

बूट 2 डॉकर के अपवाद के साथ एक रीड-ओनली फाइल सिस्टम (रिबूट पर मिटा दिया जाएगा) है:

  1. कंटेनर और उनके डेटा (वॉल्यूम) - यह वही है जिसके बारे में आप पढ़ते हैं /var/lib/docker
  2. डॉकर तस्वीरें
  3. डॉकर कॉन्फ़िगरेशन (जैसे /var/lib/boot2docker/profile जहां डेमॉन झंडे को ट्विक किया जा सकता है)

मैं बूट 2 डॉकर का उपयोग नहीं करता, लेकिन अगर /डेटा रिबूट पर मिटा दिया जाता है, तो यही वह जगह है जहां आपका वॉल्यूम संग्रहीत किया जा रहा है (docker run -v /data:/var/lib/mysql), तो यह खो जाएगा ।

आप जो कर रहे हैं वह वॉल्यूम दृढ़ता से निपटने के लिए दो अलग-अलग पैटर्न भी जोड़ रहा है । दृढ़ता प्राप्त करने के लिए, कंटेनर होस्ट सिस्टम पर एक निर्दिष्ट स्थान से वॉल्यूम माउंट कर सकते हैं (जिसे लगातार माना जाता है), या वे डेटा कंटेनर से जुड़े हो सकते हैं, और इसके साथ माउंट किए जा सकते हैं --volumes-from. ऐसा लगता है कि होस्ट फाइल सिस्टम दृष्टिकोण बूट 2 डॉकर के लिए उपयुक्त नहीं है, और आपको डेटा वॉल्यूम पैटर्न (केवल) का उपयोग करना चाहिए ।

संभवतः आपको अपना डेटा कंटेनर बनाना चाहिए -v /var/lib/mysql, बजाय -v /data:/var/lib/mysql.

ध्यान दें कि मैं मैक बीटा के लिए डॉकर का उपयोग कर रहा हूं जो एक्सहाइव वीएम का उपयोग कर रहा है ।

मशीन के बीच /वार/लिब/बूट 2 डॉकर की सामग्री बनी रहेगी restarts.So यदि आप चाहते हैं कि आपके वीएम पर कुछ फाइलें उपलब्ध हों, तो उन्हें इस निर्देशिका में रखें ।

यदि आप चाहते हैं कि वे डॉकर कंटेनर चलाने के लिए एक अलग स्थान पर पहुंच योग्य हों तो आप निम्नलिखित को /वार/लिब/बूट 2 डॉकर/प्रोफाइल में जोड़ सकते हैं:

mkdir -p /desired/pathln -s /var/lib/boot2docker/your.file /desire/path/your.file

यदि आप चाहते हैं जोड़ने के लिए अन्य विन्यास के लिए सिस्टम फ़ाइलों होगा कि जारी रहती है के बीच वीएम पुनरारंभ हो जाता है इस तरह के रूप में अतिरिक्त मूल्यों में अपने मेजबान फ़ाइल है, तो आप जोड़ सकते हैं एक कमांड के रूप में इस तरह के एक करने के लिए नीचे के /var/lib/boot2docker/प्रोफ़ाइल:

echo '127.0.0.1 your.domain.com' >> /etc/hosts

आशा है कि यह मदद करता है