डॉकर में सेव और एक्सपोर्ट में क्या अंतर है?


157

मैं कुछ दिनों के लिए डॉकर के साथ खेल रहा हूं और मैंने पहले से ही कुछ चित्र बनाए हैं (जो वास्तव में मजेदार था!)। अब मैं अपना काम जारी रखना चाहता हूं saveऔर exportआज्ञा लेकर आया हूं, लेकिन मैं उन्हें पूरी तरह से समझ नहीं पाया।

saveऔर exportडॉकर में क्या अंतर है ?


4
मैंने इसके बारे में tuhrig.de/difference-between-save-and-export-in-docker
Thomas Uhrig

जवाबों:


169

संक्षिप्त उत्तर है:

  • saveएक छवि प्राप्त करेंगे: एक वीएम या एक भौतिक सर्वर के लिए, जो कि .ISO छवि या डिस्क होगा। आधार ऑपरेटिंग सिस्टम।

    यह छवि बनाने के लिए आवश्यक सभी श्रृंखलाओं की परतों और मेटाडेटा को पैक करेगा। फिर आप इस "सहेजी गई" छवियों की श्रृंखला को एक और डॉक उदाहरण में लोड कर सकते हैं और इन छवियों से कंटेनर बना सकते हैं।

  • exportपूरे कंटेनर को लाएगा: एक नियमित वीएम के स्नैपशॉट की तरह। निश्चित रूप से ओएस को बचाता है, लेकिन आपके द्वारा किए गए किसी भी परिवर्तन, कंटेनर जीवन के दौरान लिखी गई कोई भी डेटा फ़ाइल। यह एक पारंपरिक बैकअप की तरह है।

    यह आपको अपने कंटेनर के फाइल सिस्टम युक्त एक फ्लैट .tar संग्रह देगा।

संपादित करें: जैसा कि मेरी व्याख्या अभी भी भ्रम पैदा कर सकती है, मुझे लगता है कि यह समझना महत्वपूर्ण है कि इनमें से एक कमांड कंटेनर के साथ काम करता है, जबकि दूसरा छवियों के साथ काम करता है।

  • एक छवि को 'मृत' या अपरिवर्तनीय माना जाता है, जिसमें से 0 या 1000 कंटेनर शुरू करने से एक भी बाइट नहीं बदलेगी। इसलिए मैंने पहले आईएसओ स्थापित एक सिस्टम के साथ तुलना की। यह शायद एक लाइव-सीडी के करीब भी है।

  • एक कंटेनर छवि को "बूट" करता है और उसके ऊपर एक अतिरिक्त परत जोड़ता है। यह परत कंटेनर पर किसी भी परिवर्तन (निर्मित / परिवर्तित / हटाए गए फ़ाइलों ...) को संग्रहीत करती है।


2
बस मेरे स्पष्टीकरण के लिए: मान लें कि मेरे पास एक चलने वाला कंटेनर है जहां मैंने कुछ बदलाव किए (जैसे मैंने एक नया फ़ोल्डर बनाया)। अब मैं इस कंटेनर (साथ docker commit) की एक छवि बना सकता हूं । मैं तो saveछवि कर सकते हैं । या मैं exportसीधे कंटेनर कर सकते हैं। और दोनों तरीकों ( saveछवि और exportकंटेनर) का एक ही परिणाम होगा?
थॉमस उह्रिग

2
हां और ना। exportआप एक फ्लैट .tar संग्रह के अपने कंटेनर फाइल सिस्टम युक्त दे देंगे। saveछवि बनाने के लिए आवश्यक सभी श्रृंखला की परतों और मेटाडेटा को पैक करेगा। फिर आप इस " saved" चित्र श्रृंखला को एक और डॉक उदाहरण में लोड कर सकते हैं और इन छवियों से कंटेनर बना सकते हैं।
mbarthelemy

7
@ThomasUhrig आप कंटेनर को एक परत / आधार छवि में "समतल" करने के लिए निर्यात का उपयोग कर सकते हैं। इसके अलावा आप कंटेनर (fe डेटा कंटेनर) का बैकअप लेने के लिए इसका उपयोग कर सकते हैं। लेकिन यह बिना exportफ़ंक्शन के भी किया जा सकता है ।
जिरी

9
साथ ही, exportसभी मेटाडेटा खो जाएंगे, इसलिए यदि आप कंटेनर को उस छवि के साथ चलाने का प्रयास करते हैं, तो आपके पास CMD और अन्य मेटाडेटा का पुनर्मिलन है। saveमेरे लिए ठीक काम किया, लेकिन निर्यात में दर्द था
मिराज

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

20

आज्ञा saveऔर exportआज्ञा के बीच दो मुख्य अंतर हैं ।

  1. saveकमांड पूरी छवि को इतिहास और मेटाडेटा से बचाता है लेकिन exportकमांड केवल फ़ाइल संरचना (इतिहास और मेटाडेटा के बिना) निर्यात करता है। तो निर्यात की गई टार फाइल छोटी होगी और फिर सेव की जाएगी।

  2. जब आप एक नई छवि बनाने के लिए निर्यात की गई फ़ाइल सिस्टम का उपयोग करें तो यह नई छवि किसी भी शामिल नहीं होंगे USER, EXPOSE, RUNअपने Dockerfile से आदि आदेशों। केवल फ़ाइल संरचना को स्थानांतरित किया जाएगा। इसलिए जब आप अपने डॉकरीफाइल में उल्लिखित कीवर्ड का उपयोग कर रहे हैं तो आप इमेज को दूसरी मशीन पर स्थानांतरित करने के लिए एक्सपोर्ट कमांड का उपयोग नहीं कर सकते हैं - आपको हमेशा सेव कमांड का उपयोग करने की आवश्यकता होती है।


4

निर्यात की गई छवि में कोई परत या इतिहास की जानकारी नहीं होगी, इसलिए यह छोटी होगी और आप रोलबैक नहीं कर पाएंगे।

सहेजी गई छवि होगा परत और इतिहास के बारे में जानकारी है, तो बड़ा है।

यदि किसी ग्राहक को यह दिया जाता है, तो क्या आप उन परतों को रखना चाहते हैं या नहीं?


इसलिए, एक निर्यात एक txt फ़ाइल के समान है जिस पर कुछ भी नहीं लिखा है ?? @neil
AATHITH RAJENDRAN

4
यह बिना पूर्व बफर 8 के साथ एक पाठ फ़ाइल की तरह है)
नील मैकगिल

2

तकनीकी रूप से, बचाने / लोड रिपॉजिटरी के साथ काम करता है जो एक या अधिक छवियों का हो सकता है, जिसे परतों के रूप में भी जाना जाता है। रेपो के भीतर एक छवि एक परत है। अंत में, एक कंटेनर एक त्वरित छवि है (चल रहा है या नहीं)।


1

डॉकर सेव एक टार फाइल रेपो का निर्माण करता है, जिसमें सभी पैरेंट लेयर्स होते हैं, और सभी टैग + वर्जन, या निर्दिष्ट रेपो: टैग, इमेज से प्रदान किए गए प्रत्येक तर्क के लिए ।

डॉकटर निर्यात कंटेनर से निर्दिष्ट संस्करणों की सामग्री के बिना फ्लैट सामग्री के साथ निर्दिष्ट फ़ाइल (टार या टीजीजी हो सकती है) का उत्पादन करता है ।

डोकर बचाने डोकर जबकि डोकर छवि पर उपयोग करने की आवश्यकता निर्यात कंटेनर पर उपयोग करने की आवश्यकता है (बस छवि चल की तरह)

उपयोग सहेजें

डॉकटर सेव करें [विकल्प] इमेज [IMAGE ...]

टार आर्काइव में एक छवि (ओं) को सहेजें (डिफ़ॉल्ट रूप से STDOUT पर स्ट्रीम किया गया)

--help = false Print उपयोग -o, --output = "" STDOUT के बजाय फ़ाइल में लिखें

निर्यात उपयोग

डॉकटर निर्यात [विकल्प] कंटेनर

टार आर्काइव के रूप में कंटेनर के फाइल सिस्टम की सामग्री को निर्यात करें

--help = false Print उपयोग -o, --output = "" STDOUT के बजाय फ़ाइल में लिखें


1
प्रश्न सामान्यीकृत परिभाषा और उपयोग के बारे में नहीं दो आदेशों के बीच अंतर के बारे में है!
अबू शूमन

0

export: container (filesystem)-> image tar
import: exported image tar-> image। केवल एक परत।

save: image-> image tar
load: saved image tar-> image। सभी परतें बरामद होंगी।

से कार्रवाई में डोकर, द्वितीय संस्करण p190।

स्तरित छवियां छवि के इतिहास को बनाए रखती हैं, कंटेनर-निर्माण मेटाडेटा, और पुरानी फाइलें जिन्हें हटा दिया गया है या ओवरराइड किया जा सकता है।

चपटी छवियों में फ़ाइल सिस्टम पर फ़ाइलों का केवल वर्तमान सेट होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.