ব্যাকগ্রাউড
ইস্যুটির জন্য দোষটি আমাদের ধারক ভলিউমের ভুল কনফিগারেশন এবং ডকারের ফাঁস (রিলিজ করতে ব্যর্থ) এর সাথে এই খণ্ডগুলিতে লেখা অস্থায়ী ডেটার মধ্যে বিভক্ত হতে পারে। আমাদের ম্যাপিং করা উচিত (হয় ফোল্ডার বা অন্য ধ্রুবক স্টোরেজ দাবির হোস্ট করতে) কনটেইনারটির সমস্ত অস্থায়ী / লগস / স্ক্র্যাচ ফোল্ডার যেখানে আমাদের অ্যাপগুলি প্রায়শই এবং / অথবা ভারী লেখেন। ডকার ডিফল্টরূপে অবস্থিত স্বয়ংক্রিয়ভাবে তৈরি তথাকথিত এমপিডায়ার্স সমস্ত পরিষ্কার করার জন্য দায় গ্রহণ করে না /var/lib/docker/overlay2/*/diff/*। কনটেইনার বন্ধ হওয়ার পরে এই "অ-অবিচলিত" ফোল্ডারগুলির সূচিপত্রগুলি স্বয়ংক্রিয়ভাবে ডকারের মাধ্যমে মুছে ফেলা উচিত, তবে দৃশ্যত তা নয় (ধারকটি এখনও চলমান থাকলে তারা হোস্টের পক্ষ থেকে মুছে ফেলাও অসম্ভব হতে পারে - এবং এটি কয়েক মাস ধরে চলতে পারে) একেবারে).
কর্মক্ষেত্র
একটি কর্মক্ষেত্রের সাবধানে ম্যানুয়াল ক্লিনআপ প্রয়োজন, এবং ইতিমধ্যে অন্য কোথাও বর্ণনা করার সময় আপনি এখনও আমার কেস স্টাডি থেকে কিছু ইঙ্গিত পেতে পারেন, যা আমি যতটা সম্ভব শিক্ষামূলক এবং সাধারণকরণযোগ্য করার চেষ্টা করেছি।
সুতরাং যা ঘটেছিল তা হ'ল অপরাধী অ্যাপ্লিকেশনটি (আমার ক্ষেত্রে clair-scanner) /diff/tmpডকারের সাবফোল্ডারে কয়েক মাস ধরে কয়েকশ জিগ ডেটা লিখতে সক্ষম হয়েছিলoverlay2
du -sch /var/lib/docker/overlay2/<long random folder name seen as bloated in df -haT>/diff/tmp
271G total
সুতরাং এই সমস্ত সাবফোল্ডারগুলি যেহেতু /diff/tmpবেশ স্ব-ব্যাখ্যামূলক ছিল (সমস্ত ফর্মের clair-scanner-*ছিল এবং তৈরির অপ্রচলিত তারিখ ছিল), তাই আমি সম্পর্কিত ধারকটি থামিয়ে দিয়েছিলাম ( docker stop clairএবং) এই অপ্রচলিত সাবফোল্ডারগুলি সাবধানতার diff/tmpসাথে একক (প্রাচীনতম) এক দিয়ে বিচক্ষণতার সাথে শুরু করে এবং ডকার ইঞ্জিনের উপর প্রভাব পরীক্ষা করে (যার systemctl restart dockerজন্য ডিস্কের স্থান পুনরায় দাবি করতে পুনরায় আরম্ভ করার প্রয়োজন ছিল ):
rm -rf $(ls -at /var/lib/docker/overlay2/<long random folder name seen as bloated in df -haT>/diff/tmp | grep clair-scanner | tail -1)
আমি ডকার পুনরায় ইনস্টল করার বা এর পুরো ফোল্ডারগুলি পরিষ্কার করার প্রয়োজন ছাড়াই কয়েকশ জিগ ডিস্ক স্পেস পুনরুদ্ধার করেছিলাম। সমস্ত চলমান পাত্রে এক পর্যায়ে থামানো উচিত ছিল, কারণ ডিস্ক স্থানটি পুনরায় দাবি করার জন্য ডকার ডিমন পুনরায় আরম্ভ করার প্রয়োজন ছিল, তাই নিশ্চিত হয়ে নিন যে প্রথমে আপনার ব্যর্থ পাত্রে কোনও / অন্য নোড / গুলি সঠিকভাবে চলছে কিনা)। আমি চাই যদিও docker pruneকমান্ডটি অপ্রচলিত /diff/tmp(বা এমনকি /diff/*) ডেটাও (এখনও অন্য একটি স্যুইচের মাধ্যমে) কভার করতে পারে ।
এটি এখন একটি 3 বছরের পুরানো ইস্যু, আপনি ডকার ফোরামগুলিতে এর সমৃদ্ধ এবং বর্ণময় ইতিহাসটি পড়তে পারেন, যেখানে উপরোক্ত সমাধানটির অ্যাপ্লিকেশন লগগুলির লক্ষ্য অনুসারে একটি বৈকল্পিক 2019 সালে প্রস্তাব করা হয়েছিল এবং এটি বেশ কয়েকটি সেটআপে কাজ করেছে বলে মনে হয়: https: // forums.docker.com/t/some-way-to-clean-up-phanfy-contents-of-var-lib-docker-overlay/30604