কীভাবে ডকার চিত্রের আকার হ্রাস করবেন


12

আমার কাছে গ্লাস ফিশ চালানোর ধারক রয়েছে। আমি যখন কোনও চিত্র প্রতিশ্রুতিবদ্ধ করার চেষ্টা করেছি তখন তা 14 গিগাবাইটে পরিণত হয়েছিল। পরে, আমি /tmp/ধারকটি মুছলাম যা 10 গিগাবাইট ছিল এবং একটি চিত্র প্রতিশ্রুতি দেওয়ার চেষ্টা করেছি, তবে এখনও চিত্রটি 14 জিবি। মনে হচ্ছে কনটেইনার থেকে ফাইলগুলি মুছে ফেলা চিত্রের আকারে প্রতিফলিত হয় না। আমি এই সমস্যাটি কীভাবে ঠিক করব?


1
আপনার সেটআপ সম্পর্কে আরও কিছু না জেনে কেউ সত্যিই কোনও সুপারিশ করতে পারে না। ডকফায়াইল কী? ডকার বিল্ড প্রসঙ্গে যোগ করা ফাইল ট্রিটি কী? অফিসিয়াল glassfishডকার চিত্রটি প্রায় 1 জিবি। ডকার ইমেজের জন্য বেশ জঘন্য, যদিও আপনি যা নির্মাণ করছেন তা তুলনায় এটি এখনও অনেক ছোট।
অ্যান্ডি শিন

কিভাবে এই জন্য এই প্রশ্ন দেখুন । এছাড়াও, এই গুগল অনুসন্ধানে বেশ কয়েকটি প্রাসঙ্গিক নিবন্ধ রয়েছে।
মিশা ব্রুকম্যান 16'12

উত্তর:


9

আপনি যে সমস্যার মুখোমুখি হতে পারেন তা হ'ল কমিটের মাধ্যমে ফাইলগুলি সরিয়ে ফেলা পূর্ববর্তী চিত্রটিতে থাকা ফাইলটি পরিবর্তন করে না, যাতে পূর্বের চিত্রটি এখনও 14G থাকে।

এই নিবন্ধে "স্তরগুলি" অংশটি দেখুন: http://woudenberg.io/reducing-docker-image-size/

এই সমস্যাটি সমাধান করতে আপনার / tmp / এর আওতায় থাকা মূল প্রতিশ্রুতিগুলির মধ্যে থাকা জিনিসগুলি সরিয়ে ফেলতে হবে, সুতরাং সেই প্রতিশ্রুতির ফলস্বরূপ নির্মিত চিত্রটি সেগুলিকে অন্তর্ভুক্ত করে না। ডকফায়াইলগুলি ব্যবহার করার সময় এটি সহজ তবে কমিটের সাহায্যে চিত্রগুলি তৈরি করার সময় সম্ভব কিনা তা নিশ্চিত নয়।

আপনি যে জিনিসটি করতে সক্ষম হবেন তা হ'ল চিত্রটি রফতানি / আমদানি করে স্কোয়াশ স্তর।


4

@ জুয়ান আন্তোনিওর উত্তরটি প্রসারিত করা, এটি 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

নীচের দিকে, এর অর্থ হ'ল কম ক্যাশিং যেন সেই বিশাল কমান্ড লাইনে কোনও পরিবর্তন হয়, ডকারকে পুরো কমান্ডের পুরো সেটটি আবার চালাতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.