macOS पर Docker Compose नेम्ड वॉल्यूम को पुनर्स्थापित करने के लिए, उसमें लिखने वाली सेवाओं को रोकें, सटीक Docker वॉल्यूम नाम की पहचान करें, और एक अस्थायी कंटेनर के साथ बैकअप संग्रह को उस वॉल्यूम में निष्कर्षित करें। Docker Desktop लिनक्स वॉल्यूम को अपने Linux VM के अंदर रखता है, इसलिए Finder में Docker की आंतरिक फ़ाइलों को संपादित करने का प्रयास करने के बजाय उन तक पहुँचने के लिए Docker CLI का उपयोग करें। Docker की वॉल्यूम गाइड कंटेनर-आधारित पुनर्स्थापना विधि की व्याख्या करती है, और Docker Desktop का नेटवर्किंग अवलोकन Mac पर उपयोग किए जाने वाले Linux VM का वर्णन करता है।
पुनर्स्थापित करने से पहले: संग्रह (archive) और Compose प्रोजेक्ट की जाँच करें
सुनिश्चित करें कि Docker Desktop चल रहा है, फिर Terminal खोलें और अपनी Compose फ़ाइल वाली डायरेक्टरी में जाएँ। Finder में संग्रह ढूंढें, या Terminal में इसके नाम की पुष्टि करें। नीचे दिए गए उदाहरण मान कर चलते हैं कि backup-files नाम के फ़ोल्डर में इसका नाम backup.tar है; अपनी फ़ाइलों से मिलान करने के लिए इन मानों को समायोजित करें।
संग्रह को निष्कर्षित करने से पहले उसकी सामग्री का निरीक्षण करें। इससे आपको यह स्थापित करने में मदद मिलती है कि फ़ाइलें सीधे संग्रह रूट में संग्रहीत हैं या data/ जैसी किसी पैरेंट डायरेक्टरी के अंतर्गत हैं।
tar -tf "$HOME/backup-files/backup.tar" | head -30
head कमांड सूची को पहले 30 पथों (paths) तक सीमित करता है; यह संग्रह को नहीं बदलता है। ध्यान दें कि क्या पथ किसी डायरेक्टरी उपसर्ग (prefix) से शुरू होते हैं। आपको एप्लिकेशन की डेटा डायरेक्टरी में सही स्तर को निष्कर्षित करने की आवश्यकता होगी। Docker के प्रलेखित उदाहरण में --strip 1 का उपयोग किया गया है क्योंकि इसके संग्रह में एक टॉप-लेवल डायरेक्टरी शामिल है; यदि आपके संग्रह में ऐसा कोई उपसर्ग नहीं है तो इस विकल्प का स्वचालित रूप से उपयोग न करें। Docker का पुनर्स्थापना उदाहरण दिखाता है कि निष्कर्षण पथ पुनर्स्थापित लेआउट को कैसे प्रभावित करता है।
सटीक वॉल्यूम नाम की पहचान करें
एक Compose वॉल्यूम कुंजी जैसे कि db-data Docker वॉल्यूम का पूरा नाम नहीं हो सकती है। Compose आमतौर पर इसके आगे प्रोजेक्ट का नाम जोड़ता है, लेकिन name: या external: true के साथ कॉन्फ़िगर किया गया वॉल्यूम किसी अन्य नाम का उपयोग कर सकता है। Compose वॉल्यूम संदर्भ उन नामकरण विकल्पों की व्याख्या करता है।
वॉल्यूम की सूची देखें और यह निर्धारित करने के लिए Compose कॉन्फ़िगरेशन का निरीक्षण करें कि आपकी सेवा किसका उपयोग करती है:
docker volume ls
docker compose config
रेंडर किए गए Compose कॉन्फ़िगरेशन में, सेवा की वॉल्यूम मैपिंग और रिज़ॉल्व किए गए वॉल्यूम नाम को खोजें। यदि आपको किसी उम्मीदवार वॉल्यूम का निरीक्षण करने की आवश्यकता है, तो VOLUME_NAME को वास्तविक नाम से बदलते हुए docker volume inspect VOLUME_NAME चलाएं। आगे बढ़ने से पहले पुष्टि करें कि यह इच्छित प्रोजेक्ट और सेवा से संबंधित है; गलत वॉल्यूम में पुनर्स्थापित करने से असंबद्ध डेटा ओवरराइट हो सकता है।
राइटर्स (Writers) को रोकें और बैकअप पुनर्स्थापित करें
पुनर्स्थापित करने से पहले Compose सेवाओं को रोकें ताकि निष्कर्षण के दौरान एप्लिकेशन फ़ाइलों को न बदले। docker compose down चलाने से प्रोजेक्ट के कंटेनर और नेटवर्क रुक जाते हैं और हटा दिए जाते हैं; डिफ़ॉल्ट रूप से यह नेम्ड वॉल्यूम को बनाए रखता है। -v या --volumes जोड़ने से बचें, जो Compose-प्रबंधित नेम्ड वॉल्यूम को हटा देता है। Docker का compose down संदर्भ इस व्यवहार को सूचीबद्ध करता है।
docker compose down
शेल वैरिएबल को आपके द्वारा पुष्टि किए गए सटीक वॉल्यूम नाम पर सेट करें, फिर एक अस्थायी कंटेनर का उपयोग करके संग्रह को निष्कर्षित करें। यह उदाहरण आधिकारिक alpine इमेज का उपयोग करता है, बैकअप फ़ोल्डर को रीड-ओनली माउंट करता है, और लक्ष्य वॉल्यूम को /restore पर माउंट करता है। यदि आपका वास्तविक नाम भिन्न है तो myproject_db-data को बदलें। इमेज स्थानीय रूप से उपलब्ध होनी चाहिए या Docker को इसे खींचने (pull करने) में सक्षम होना चाहिए।
VOLUME_NAME='myproject_db-data'
BACKUP_DIR="$HOME/backup-files"
docker run --rm \
--mount "type=volume,source=$VOLUME_NAME,target=/restore" \
--mount "type=bind,source=$BACKUP_DIR,target=/backup,readonly" \
alpine sh -c 'cd /restore && tar -xf /backup/backup.tar --strip-components=1'
यह कमांड मानता है कि संग्रह में एक संलग्न डायरेक्टरी स्तर है, उदाहरण के लिए data/file.db। यदि संग्रह सूची में फ़ाइलें सीधे उसके रूट पर दिखाई देती हैं, तो --strip-components=1 हटा दें। यदि पथों का एक अलग सामान्य उपसर्ग है, तो निकालने के लिए घटकों की संख्या चुनें ताकि एप्लिकेशन की अपेक्षित फ़ाइलें सीधे /restore के अंतर्गत आएं। --mount सिंटैक्स स्पष्ट रूप से एक नेम्ड वॉल्यूम और एक होस्ट डायरेक्टरी को संलग्न करता है; Docker इन माउंट विकल्पों और पुनर्स्थापना पैटर्न को अपने वॉल्यूम गाइड में प्रलेखित करता है।
निष्कर्षण मेल खाने वाले पथों वाली फ़ाइलों को बदल देता है लेकिन वॉल्यूम में पहले से मौजूद असंबंधित फ़ाइलों को साफ़ नहीं करता है। यदि आपको बैकअप के सटीक प्रतिरूप (mirror) की आवश्यकता है, तो केवल मर्ज-शैली का निष्कर्षण अपर्याप्त है: पहले वर्तमान वॉल्यूम का एक अलग बैकअप लें, फिर संग्रह और लक्ष्य की पुष्टि करने के बाद एक सोची-समझी क्लीनअप प्रक्रिया का उपयोग करें। किसी ऐसे वॉल्यूम पर कोई व्यापक डिलीट कमांड न चलाएं जिसकी आपने पहचान नहीं की है।
प्रोजेक्ट शुरू करें और परिणाम जांचें
Compose सेवाओं को फिर से शुरू करें:
docker compose up -d
Compose प्रोजेक्ट में घोषित मौजूदा वॉल्यूम का पुन: उपयोग करता है, और यदि यह अनुपलब्ध है तो एक नया बनाता है। Compose वॉल्यूम संदर्भ उस व्यवहार को प्रलेखित करता है। सेवा लॉग की जाँच करें और, जहाँ लागू हो, एप्लिकेशन की अपनी अखंडता या डेटाबेस पुनर्प्राप्ति जाँचों का उपयोग करें। पुनर्स्थापना को पूर्ण मानने से पहले पुष्टि करें कि अपेक्षित रिकॉर्ड या फ़ाइलें मौजूद हैं।
यदि सेवा खाली डेटा डायरेक्टरी की रिपोर्ट करती है, तो वॉल्यूम नाम, होस्ट डायरेक्टरी पथ और संग्रह की डायरेक्टरी संरचना की पुनः जाँच करें। यह भी सत्यापित करें कि संग्रह एप्लिकेशन संस्करण के साथ संगत है और इसका बैकअप ऐसी स्थिति में लिया गया था जिससे एप्लिकेशन पुनर्प्राप्त हो सके। एक सफल tar निष्कर्षण केवल यह पुष्टि करता है कि फ़ाइलों को अनपैक किया गया था; यह स्थापित नहीं करता है कि एप्लिकेशन डेटा मान्य है।
स्रोत
Volumes — Docker
docker compose down — Docker
Networking on Docker Desktop — Docker