مقدمه
Docker بسته بندی برنامه ها و خدمات خود را در کانتینرها آسان می کند تا بتوانید آنها را در هر مکانی اجرا کنید. با این حال، همانطور که با Docker کار می کنید، جمع آوری تعداد زیادی از تصاویر استفاده نشده، ظروف و حجم داده که خروجی را به هم می ریزد و فضای دیسک را مصرف می کند نیز آسان است. Docker تمام ابزارهایی را که برای پاکسازی سیستم خود از خط فرمان نیاز دارید در اختیار شما قرار می دهد. این راهنمای به سبک برگه تقلب اشاره سریعی به دستوراتی ارائه می دهد که برای آزاد کردن فضای دیسک و سازماندهی سیستم شما با حذف تصاویر، ظروف و حجم های استفاده نشده Docker مفید هستند.
نحوه استفاده از این راهنما:
- این راهنما در قالب برگه تقلب با قطعه های خط فرمان مستقل است.
- به هر بخش مربوط به کاری که میخواهید تکمیل کنید بروید.
پاک کردن تمام تصاویر، کانتینرها و حجم ها
Docker یک فرمان واحد ارائه میکند که هر منبعی مانند تصاویر، کانتینرها، حجمها و شبکهها را پاک میکند:
docker system prune
برای حذف کانتینرهای متوقف شده و تمام تصاویر استفاده نشده، -a را به دستور اضافه کنید:
docker system prune -a
حذف تصاویر داکر
از دستور docker images با -a برای پیدا کردن شناسه تصاویری که می خواهید حذف کنید استفاده کنید. این به شما هر تصویر، از جمله لایه های میانی تصویر را نشان می دهد. وقتی تصاویری را که می خواهید حذف کنید پیدا کردید، می توانید شناسه یا برچسب آنها را به docker rmi ارسال کنید:
لیست:
docker images -a
برداشتن:
docker rmi Image Image
تصاویر آویزان را حذف کنید
تصاویر داکر از چندین لایه تشکیل شده است. تصاویر آویزان لایه هایی هستند که هیچ ارتباطی با هیچ تصویر برچسب گذاری شده ندارند. آنها دیگر هدفی ندارند و فضای دیسک را مصرف می کنند. آنها را می توان با افزودن فیلتر -f با مقدار dangling=true به دستور docker images پیدا کرد. وقتی مطمئن شدید که می خواهید آنها را حذف کنید، می توانید از دستور docker image prune استفاده کنید:
لیست:
docker images -f dangling=true
برداشتن:
docker image prune
حذف تصاویر بر اساس یک الگو
با استفاده از ترکیبی از تصاویر docker و grep می توانید تمام تصاویری را که با یک الگو مطابقت دارند پیدا کنید. هنگامی که راضی شدید، می توانید با استفاده از awk آنها را حذف کنید تا شناسه ها را به docker rmi منتقل کنید. توجه داشته باشید که این ابزارها توسط Docker ارائه نمی شوند و لزوماً در همه سیستم ها در دسترس نیستند:
لیست:
docker images -a | grep "pattern"
برداشتن:
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
تمام تصاویر را حذف کنید
تمام تصاویر Docker در یک سیستم را می توان با افزودن -a
به دستور docker images فهرست کرد. هنگامی که مطمئن شدید که می خواهید همه آنها را حذف کنید، می توانید -q
را اضافه کنید تا شناسه تصویر را به docker rmi
ارسال کنید:
لیست:
docker images -a
برداشتن:
docker rmi $(docker images -a -q)
برداشتن (حذف قالب):
از دستور docker ps با -a برای پیدا کردن نام یا شناسه کانتینرهایی که می خواهید حذف کنید استفاده کنید:
لیست:
docker ps -a
برداشتن:
docker rm ID_or_Name ID_or_Name
تمام قالب خروجی را بردارید
میتوانید کانتینرها را با استفاده از docker ps -a
پیدا کنید و آنها را بر اساس وضعیتشان فیلتر کنید: ایجاد، راهاندازی مجدد، در حال اجرا، توقف موقت یا خروج. برای بررسی لیست کانتینرهای خارج شده، از -f برای فیلتر بر اساس وضعیت استفاده کنید. وقتی تأیید کردید که میخواهید آن کانتینرها را حذف کنید، از -q برای ارسال شناسهها به دستور docker rm استفاده کنید:
لیست:
docker ps -a -f status=exited
برداشتن:
docker rm $(docker ps -a -f status=exited -q)
قالب را با استفاده از بیش از یک فیلتر خارج کنید
فیلترهای داکر را می توان با تکرار فیلتر با یک مقدار اضافی ترکیب کرد. این منجر به لیستی از ظروف می شود که هر یک از این شرایط را دارند. برای مثال، اگر میخواهید همه کانتینرهایی را که بهعنوان ایجاد شده (حالتی که هنگام اجرای یک کانتینر با دستور نامعتبر ایجاد میشود) یا خارج شده علامتگذاری شدهاند، حذف کنید، میتوانید از دو فیلتر استفاده کنید:
لیست:
docker ps -a -f status=exited -f status=created
برداشتن:
docker rm $(docker ps -a -f status=exited -f status=created -q)
قالب را طبق یک الگو بردارید
می توانید تمام کانتینرهایی را که با یک الگو مطابقت دارند با استفاده از ترکیبی از docker ps و grep پیدا کنید. وقتی از اینکه لیستی را که می خواهید حذف کنید راضی هستید، می توانید از awk و xargs برای ارائه ID به docker rm استفاده کنید. توجه داشته باشید که این ابزارها توسط Docker ارائه نمی شوند و لزوماً در همه سیستم ها در دسترس نیستند:
لیست:
docker ps -a | grep "pattern”
برداشتن:
docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm
تمام قالب ها را متوقف کرده و بردارید
می توانید کانتینرهای سیستم خود را با docker ps بررسی کنید. با افزودن -a همه کانتینرها نشان داده می شود. وقتی مطمئن شدید که میخواهید آنها را حذف کنید، میتوانید -q را برای ارائه شناسهها به دستورات docker stop و docker rm اضافه کنید:
لیست:
docker ps -a
برداشتن:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
حذف حجم ها
یک یا چند حجم خاص را حذف کنید – Docker 1.9 و بالاتر
از آنجایی که هدف حجم ها این است که مستقل از کانتینرها وجود داشته باشند، وقتی یک قالب برداشته می شود، یک حجم به طور خودکار در همان زمان حذف نمی شود. هنگامی که یک حجم وجود دارد و دیگر به هیچ ظرفی متصل نیست، به آن حجم آویزان می گویند. برای تعیین مکان آنها و تأیید اینکه می خواهید آنها را حذف کنید، می توانید از دستور docker volume ls با یک فیلتر استفاده کنید تا نتایج را به حجم های آویزان محدود کنید. هنگامی که از لیست راضی هستید، می توانید همه آنها را با هرس حجمی docker حذف کنید:
لیست:
docker volume ls -f dangling=true
برداشتن:
docker volume prune
یک قالب و حجم آن را بردارید
اگر یک حجم بدون نام ایجاد کرده اید، می توان آن را همزمان با کانتینر با -v حذف کرد. توجه داشته باشید که این فقط با حجم های بدون نام کار می کند. هنگامی که حجم با موفقیت حذف شد، شناسه آن نمایش داده می شود. توجه داشته باشید که هیچ اشاره ای به حذف حجم نشده است. اگر بدون نام باشد، بی سر و صدا از سیستم حذف می شود. اگر نام داشته باشد، بی سر و صدا حضور دارد.
برداشتن:
docker rm -v container_name
نتیجه
این راهنما برخی از دستورات رایج مورد استفاده برای حذف تصاویر، کانتینرها و حجم ها با Docker را پوشش می دهد. بسیاری از ترکیبات و پرچم های دیگر وجود دارد که می توان با هر کدام از آنها استفاده کرد. برای راهنمای جامع در مورد آنچه در دسترس است، به مستندات Docker برای هرس سیستم docker، docker rmi
، docker rm
و docker volume rm
مراجعه کنید. اگر کارهای پاکسازی معمولی وجود دارد که میخواهید در راهنما ببینید، لطفاً در نظرات بپرسید یا پیشنهاداتی ارائه دهید.