डॉकर छवि का आकार कैसे कम करें


12

मेरे पास ग्लासफिश चलाने वाला कंटेनर है। जब मैंने एक छवि बनाने की कोशिश की, तो यह 14GB हो गई। बाद में, मैंने /tmp/कंटेनर में हटा दिया जो 10GB था और एक छवि बनाने की कोशिश की, लेकिन फिर भी छवि 14GB है। ऐसा लगता है कि कंटेनर से फ़ाइलों को हटाना छवि आकार में परिलक्षित नहीं होता है। मैं यह समस्या कैसे हल करूं?


1
आपके सेटअप के बारे में थोड़ा और जानने के बिना कोई भी वास्तव में कोई सिफारिश नहीं कर सकता है। Dockerfile क्या है? फाइल ट्री क्या है जो डॉकर बिल्ड संदर्भ में जुड़ जाता है? आधिकारिक glassfishडॉकर छवि लगभग 1 जीबी है। हालांकि डॉकटर छवि के लिए यह बहुत बड़ा है, लेकिन यह अभी भी बहुत छोटा है कि आप क्या कर रहे हैं।
एंडी शिन

इस एसओ प्रश्न को एक हाउटो के लिए देखें । इसके अलावा, इस Google खोज में कई प्रासंगिक लेख हैं।
मिशा ब्रुकमैन

जवाबों:


9

आपके द्वारा सामना की जा रही समस्या यह है कि फ़ाइलों को हटाने से यह तथ्य नहीं बदलता है कि फ़ाइल पिछली छवि में थी, इसलिए पिछली छवि अभी भी 14G है।

इस लेख में "परत" भाग पर एक नज़र डालें: http://woudenberg.io/reducing-docker-image-ize/

उस समस्या को हल करने के लिए आपको मूल कमेटी के भीतर / tmp / के भीतर की चीजों को हटाने की जरूरत है जो उन्हें उत्पन्न करती है, इसलिए उस कमिट के परिणामस्वरूप बनाई गई छवि में उन्हें शामिल नहीं किया जाता है। यह आसान है जब dockerfiles का उपयोग करें लेकिन सुनिश्चित करें कि यदि संभव नहीं है तो कमिट के साथ चित्र बनाएं।

एक और चीज जो आप कर सकते हैं वह है छवि को निर्यात / आयात करके स्क्वैश की परतें।


4

@Juan एंटोनियो के उत्तर पर विस्तार करते हुए, Dockerfileऐसा करने से स्थान नहीं बचेगा:

RUN apt-get install -y foo bar
...
RUN apt-get purge --auto-remove -y foo bar

इसके बजाय आपको क्या करने की आवश्यकता है:

RUN apt-get install -y foo bar && \
    && ... \
    && apt-get purge --auto-remove -y foo bar

नीचे की तरफ, इसका मतलब कम कैशिंग है जैसे कि बड़ी कमांड लाइन में कुछ भी बदलता है, डॉकर को कमांड के पूरे सेट को फिर से चलाना होगा।

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