Table of Contents
چرا تمیز کردن خودکار Docker برای مدیریت فضای دیسک ضروری است؟
ظروف Docker یک محیط سبک و سازگار برای توسعه برنامه، تست و استقرار ارائه می دهند، با این حال، راحتی چرخش سریع و پاره کردن ظروف به قیمت می آید: دیسک نفخ در طول زمان، تصاویر تکان دهنده، ظروف متوقف شده، حجم های استفاده نشده، و ذخیره سازی ذخیره سازی ذخیره سازی، مصرف فضای ارزشمند بدون کنترل، این درهم شکسته می تواند منجر به عملکرد، و خاموش شدن تعمیر و حتی سیستم ذخیره سازی قابل پیش بینی شود، بلکه تعمیر و ذخیره سازی را نیز تضمین می کند.
یک ایستگاه کاری تک توسعه دهنده ممکن است گیگابایت های تصاویر Docker را جمع آوری کند در عرض هفته ها، در محیط های تولیدی، که ظروف اغلب به روز می شوند یا جایگزین می شوند، مقیاس های مشکل به سرعت تمیز کردن دستی خطا است و اغلب نادیده گرفته می شود.
آشنایی با Docker’s Cleanup
Docker مجموعه ای از دستورات را برای حذف داده های استفاده نشده ارائه می دهد، قدرتمند ترین آن ها (FLT:0) است که می تواند ظروف، تصاویر، جلد ها و شبکه ها را هدف قرار دهد.
- - حذف همه ظروف متوقف، همه تصاویر و شبکه های استفاده نشده است.
- - حذف تمام تصاویر استفاده نشده (نه فقط چشمک زدن)، از جمله تصاویر ذکر شده توسط هر ظرف.
- [FLT3] [و همچنین] حجم های استفاده نشده (به طور پیش فرض از بین نمی روند.
- - تمام پرچم ها را ترکیب می کند: بدون تایید، تمام تصاویر و حجم های استفاده نشده، این گزینه هسته ای برای تمیز کردن است.
در این میان، دوکر به صورت جداگانه ای از دستورات استفاده می کند: [۵] [۱۰] [۱۰] [۱۰] [۱۰]، [۱۰] و [۳] هر کدام از آنها فیلترهای جداگانه (مانند را می پذیرند تا منابع قدیمی تر از زمان معینی را محدود کنند.
راه اندازی مرحله به مرحله برای اتوماسیون مبتنی بر Cron
در سیستم های لینوکس، cron ساده ترین ابزار برنامه ریزی برای کارهای تکراری است.برای خودکارسازی Docker Cleanup، شما فقط به چند خط در crontab خود نیاز دارید.
راهنمای Docker Command Path
مشاغل Cron با محیط محدود اجرا می شوند.
which docker
این روش به طور معمول در مسیر خود به صورت زیر است.
۲- ویرایش کردن Crontab
دویدن:
crontab -e
اگر این اولین بار شما باشد، از شما خواسته می شود که یک ویرایشگر را انتخاب کنید.یک خط مانند زیر برای اجرای روزانه در ساعت 2:00 صبح اضافه کنید:
0 2 * * * /usr/bin/docker system prune -af --volumes > /dev/null 2>&1
تغییر مسیر و سست برای خنثی کردن برای جلوگیری از پر کردن صندوق پستی خود را با خروجی تنظیم برنامه به عنوان مورد نیاز (به عنوان مثال، برای هفته.
۳- تست شغل
قبل از تکیه بر cron، دستور را به صورت دستی اجرا کنید تا اطمینان حاصل شود که به عنوان انتظار می رود کار می کند:
sudo /usr/bin/docker system prune -af --volumes
اگر از یک نصب غیر root Docker استفاده می کنید، ممکن است لازم باشد که اضافه کنید یا کار cron را به عنوان کاربر در گروه [FLT 19] اجرا کنید.
اتوماسیون پیشرفته با Systemd Timers
در حالی که cron برای بسیاری از افراد کافی است، تایمر های سیستم شده ارائه می دهند تا بهتر وارد سیستم شوند، پردازش وابستگی و ادغام با بقیه سیستم آن.در اینجا چگونگی ایجاد یک تایمر برای تمیز کردن Docker را ارائه می دهند.
1- ایجاد یک واحد خدمات
پس از آن را به عنوان (FLT 20) ذخیره کنید.
[Unit]
Description=Docker system prune
Wants=docker.service
After=docker.service
[Service]
Type=oneshot
ExecStart=/usr/bin/docker system prune -af --volumes
User=root
StandardOutput=journal
۲- ایجاد یک واحد زمان
پس انداز کنید (FLT 22)
[Unit]
Description=Run Docker cleanup daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
۳- فعال کردن و شروع تایمر
sudo systemctl daemon-reload
sudo systemctl enable docker-cleanup.timer
sudo systemctl start docker-cleanup.timer
بررسی (FLT 25) این رویکرد خروجی را به مجله سیستم شده وارد می کند و باعث می شود که تمیز کردن حسابرسی آسان تر شود.
درک فیلتر های پاک کننده برای سیاست های بازگشتی
هیدروژکتیو برای اکثر محیط های توسعه ایمن است، اما سیستم های تولیدی ممکن است نیاز به سیاست های پیش فرض داشته باشند، به عنوان مثال، شما ممکن است بخواهید تصاویر برچسب زده شده به عنوان (FLT 26) یا [FLT 27] را نگه دارید یا فقط منابع قدیمی تر از 48 ساعت را حذف کنید.
فیلتر کردن در سن
برای پر کردن تصاویر و ظروف استفاده نشده قدیمی تر از 24 ساعت:
docker system prune -af --filter "until=24h" --volumes
فیلتر [FLT 29] برای هر دو عکس و ظروف کار می کند.با چندین بار برای قوانین پیچیده تر ترکیب شده است.
حذف منابع خاص
در این صورت، از این طریق به صورت زیر استفاده کنید و از آن استفاده کنید تا از آن استفاده کنید.
نظارت بر فضای دیسک و اثربخشی پاک سازی
اتوماسیون تنها به اندازه نظارت شما خوب است. تنظیم هشدار برای ردیابی استفاده از دیسک پس از هر روش ساده شامل:
- در حال اجرا و اجرای آن در یک کار با کیفیت و در نتیجه.
- استفاده از یک ابزار مانند برای ارسال معیارها به InxDB یا پروتوصیه.
- [در این باره] [ [FLT:] [FLT:] [FLT:] یا New Relic برای تجسم ذخیره سازی Docker در طول زمان.
اگر تمیز کردن شما اجرا می شود، اما استفاده از دیسک بالا باقی می ماند، بررسی استفاده از (FLT:35) برای دیدن جایی که فضا مصرف می شود. مجرمان رایج شامل ساخت حافظه در سیستم های CI یا حجم بزرگ است که حذف نمی شوند زیرا آنها هنوز توسط ظروف متوقف شده ارجاع داده می شوند.
بهترین روش ها برای محیط های تولید
1- همیشه از یک رویکرد مرحله ای استفاده کنید
با استفاده از یک صفحه خشک هفتگی شروع کنید (FLT36) بدون پرچم (برای دیدن آنچه که برداشته می شود) خروجی را قبل از امکان حذف خودکار بررسی کنید.
۲- هماهنگ سازی با خطوط لوله CI/CD
اگر سیستم ساخت شما تصاویر موقتی زیادی ایجاد می کند، پس از ساخت یا در هنگام پنجره های کم ترافیک برنامه ریزی کنید.از ⁇ اجتناب کنید در حالی که ساختها برای جلوگیری از حذف تصادفی لایه های متوسط که هنوز در حال استفاده هستند، در حال اجرا هستند.
۳- پشتیبان گیری از داده های بحرانی
حجم های حاوی پایگاه های داده یا آپلود کاربر باید قبل از هر گونه حجم تهاجمی پشتیبانی شود.استفاده از ابزارهای مدیریت حجم Docker مانند [FLT 38] با [FLT 39] برای اتصال ذخیره سازی خارجی که تحت تاثیر قرار نمی گیرد.
۴- دویدن به عنوان یک کاربر غیرRoot
برای امنیت، از کار کردن با cron به عنوان ریشه خودداری کنید مگر اینکه لازم باشد، کاربر خود را به گروه (FLT:40) اضافه کنید و بدون کار را اجرا کنید، با این حال، توجه داشته باشید که هر کاربر در گروه به طور موثر دسترسی ریشه به میزبان دارد؛ ارزیابی خطر در محیط زیست شما.
فعالیت پاکسازی Log Cleanup Activity
ارسال فایل به جای پردازش (FLT:43)
0 2 * * * /usr/bin/docker system prune -af --volumes >> /var/log/docker-cleanup.log 2>&1
به طور منظم بررسی ورود به خطا یا حذف های غیر منتظره.
قرص های معمول و چگونگی اجتناب از آن
- [[۱] [۱۰] [۱] [۱] [۱۰] [۱] [۱]] [۱] [۱] [۱] [۱] [۱۰] [۱]] [۱] [۱] [۱۰] [۱]] [۱۰] [۱] [۱] [۱۰] [۳]] [۳] [۳] [۳] [۳] [۳] [۳]] [۳] [۳]] [۳] [۳] [۳] [۳] [۳] [بر [بر [۳]]] [۳]]] [بر [۳]]]] [۳]] [۳] [۳]]]]]]]]]] [۳] [۳] [بر [بر [بر [بر [۳] [بر [بر [۳] [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [
- [در این باره] [و] [و [از این رو] [و [از این رو] [به پیش فرض] [و [به]] [و]] [از [و]]] [و]]] [به طور پیش فرض]، [و] [به] [و] [به]] [از [و]]]] [به] [از [و]] [از [و]]] [از [و] [و] [از [و] [از [به]]] [از [به] [از [و]]]]]] [از [و] [و] [و]]]] [و] [به] [از [و] [به] [از [به] [به] [از [از [از [از [و] [و] [از [از [از [از [از [از [از [از [از [از [از [از [از [از [از [از [به]]]]]]]]]] [و] [و] [از [از [از [از [از [از [به]]]]]]]]]
- اتصال کانتینر شکستن شبکه ؛ [FLT51] شبکه های استفاده نشده را حذف می کند، اگر یک شبکه سفارشی دیگر توسط هر ظرف مرجع نیست، آن را حذف خواهد کرد، به طور بالقوه شکستن راه اندازی آینده ظرف.
- مسائل محیط زیست : Docker ممکن است در PATH زمانی که cron اجرا می شود، همیشه از مسیر کامل به دودویی استفاده کنید.
ابزار جایگزین و رویکرد
در حالی که دستورات Docker بومی بیشتر نیازها را پوشش می دهند، چندین ابزار شخص ثالث ویژگی های پیشرفته ای را ارائه می دهند:
- [FLT3] - خودکارها به روز رسانی ظروف در حال اجرا و می تواند تصاویر قدیمی پس از به روز رسانی تمیز.
- - یک UI وب برای مدیریت Docker که شامل یک ویژگی تمیز برنامه ریزی شده است.
- docker سازنده گچ [FLT3] - به طور خاص هدف ساخت حافظه، که می تواند در خط لوله CI / CD عظیم است.
در این هنگام، از |Kbectage Collection]] استفاده کنید و از ابزارهایی مانند (FLT:2) استفاده کنید.
نتیجه گیری
تمیز کردن ظروف دوکر یک عمل ساده اما حیاتی برای حفظ یک میزبان سالم و کارآمد Docker است که آیا شما cron، تایمر های سیستم شده یا یک ابزار شخص ثالث را انتخاب می کنید، کلید این است که به طور منظم با یک سیاست که صرفه جویی دیسک را در برابر خطر حذف داده هایی که شما نیاز دارید، متعادل کنید.