डॉकर वॉल्यूम बैकअप और पुनर्स्थापना

मैं सेंटोस 6.4 सर्वर पर कुछ सेवाओं को तैनात करने के लिए डॉकर का उपयोग कर रहा हूं, और मैं यह पता लगाने की कोशिश कर रहा हूं कि वे कैसे ठीक से बैकअप डेटा उत्पन्न करते हैं ।

उदाहरण के लिए, सेवाओं में से एक एक वेब एप्लिकेशन है जहां उपयोगकर्ता फ़ाइलें अपलोड कर सकते हैं । इस कंटेनर के लिए, मेरे पास एक है /files वॉल्यूम जो मैं बैकअप करना चाहता हूं । मेजबान mounts की तरह लग रहा है वे कर रहे हैं कुछ हद तक सिकोड़ी है, क्योंकि इस तरह के माउंट है कोई रास्ता नहीं में पोर्टेबल — के रूप में कहा इस ब्लॉग पोस्ट और यह वॉल्यूम के लिए डॉकर प्रलेखन.

मैं एक ही ब्लॉग पोस्ट से जानता हूं कि मैं नहीं जरूरत है वॉल्यूम में फ़ाइलों तक पहुंचने के लिए एक होस्ट माउंट, मैं उपयोग कर सकता हूं docker inspect यह जानने के लिए कि फाइलें कहां हैं ।

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

तुम सही हो । चूंकि आपके पास अपने दम पर वॉल्यूम वाले कई कंटेनर हो सकते हैं, इसलिए आपको यह ट्रैक रखना होगा कि कौन सा वॉल्यूम किस कंटेनर से मेल खाता है । यह कैसे करना है यह आपके सेटअप पर निर्भर करता है: मैं डेटा कंटेनर के लिए नाम-डेटा का उपयोग करता हूं, इसलिए यह स्पष्ट है कि छवि किस कंटेनर से संबंधित है । इस तरह इसका बैकअप इस तरह लिया जा सकता है:

VOLUME=`docker inspect $NAME-data | jq '.[0].Volumes["/path/in/container"]'`tar -C $VOLUME . -czvf $NAME.tar.gz

अब आपको बस अपनी छवि को फिर से बनाने और अपने डेटा कंटेनर को फिर से बनाने की आवश्यकता है:

cat $NAME.tar.gz | docker run -name $NAME-data -v /path/in/container \                              -i busybox tar -C /path/int/container -xzf -

तो इसका मतलब है कि आपको बैकअप की आवश्यकता है:

  • Dockerfile
  • वॉल्यूम
  • कंटेनर में वॉल्यूम पथ
  • कंटेनर का नाम वॉल्यूम से संबंधित है

अद्यतन करें: इस बीच मैंने कंटेनरों और उनकी मात्रा(कंटेनर)) का बैकअप लेने के लिए एक उपकरण बनाया: https://github.com/discordianfish/docker-backup और एक बैकअप छवि जो बैकअप बना सकती है और उन्हें एस 3 पर धकेल सकती है: https://github.com/discordianfish/docker-lloyd

नए डॉकर में (परीक्षण किया गया 1.9.1, build 9894698) आप उपयोग कर सकते हैं cp आदेश.

यहां एक उदाहरण दिया गया है कि कंटेनर से होस्ट में निर्देशिका की प्रतिलिपि कैसे बनाई जाए:

docker cp wordpress:/var/www/html backups/wordpress.`date +"%Y%m%d"`/

यहां एक उदाहरण दिया गया है कि कंटेनर से निर्देशिका को कैसे कॉपी किया जाए tar फ़ाइल:

docker cp wordpress:/var/www/html - > backups/wordpress.`date +"%Y%m%d"`.tar

अंतिम लेकिन कम से कम एक उदाहरण नहीं है कि कंटेनर से निर्देशिका को कैसे कॉपी किया जाए tar.gz फ़ाइल:

docker cp wordpress:/var/www/html - | gzip > backups/wordpress.`date +"%Y%m%d"`.tar.gz