How-To-Remove-Docker-Images,-Containers,-and-Volumes
How-To-Remove-Docker-Images,-Containers,-and-Volumes

راهنمای تخصصی مدیریت و پاک‌سازی Docker

در دنیای امروز که معماری‌های Cloud-Native، Microservices و Containerization به استاندارد اصلی زیرساخت‌های نرم‌افزاری تبدیل شده‌اند، استفاده از Docker نقش کلیدی در پایداری، مقیاس‌پذیری و سرعت استقرار سرویس‌ها ایفا می‌کند. اما در کنار تمام مزایایی که Docker برای مدیران سرور و مهندسان DevOps فراهم می‌کند، یک چالش مهم همیشه وجود دارد: انباشت منابع بلااستفاده در طول زمان.
0 股票
0
0
0
0

مدیریت حرفه‌ای تصاویر، کانتینرها و ولوم‌ها برای بهینه‌سازی عملکرد سرورهای لینوکسی

Docker امروز یکی از پرکاربردترین ابزارها در مدیریت سرورها، دیپلوی سرویس‌ها و معماری‌های مدرن (Microservices / CI/CD / Cloud-native) است.
اما روی هر 服务器ی که داکر برای مدت طولانی استفاده شود، به‌تدریج حجم زیادی از Images، Containers، Volumes و Networks غیرضروری باقی می‌مانند. این انباشت می‌تواند:

  • فضای دیسک سرور را پر کند

  • سرعت Pull و Deploy سرویس‌ها را کاهش دهد

  • زمان Build را افزایش دهد

  • باعث کاهش Performance و حتی Down شدن سرویس‌ها شود

در این مقاله به شکل تخصصی و فنی یاد می‌گیریم چگونه منابع Docker را به‌صورت ایمن، هدفمند و Server-Friendly پاکسازی کنیم.

۱. اهمیت پاک‌سازی Docker در محیط‌های سرور

در یک سرور، بر خلاف محیط لوکال توسعه، هر گیگابایت فضا و هر عملیات I/O اهمیت دارد.
سه مورد اصلی که معمولاً در سرورها باعث کاهش عملکرد می‌شوند عبارت‌اند از:

۱) لایه‌های بلااستفاده تصاویر (Image Layers)

مثال: build های قدیمی، نسخه‌های قبلی سرویس‌ها، سیستم‌های CI/CD که هر Push یک Image می‌سازند.

۲) کانتینرهای خارج‌شده از مدار

در سرورها کانتینرهای متوقف‌شده معمولاً از Deploy‌های ناموفق یا Rollback‌ها باقی مانده‌اند.

۳) ولوم‌هایی که orphan شده‌اند

اگر سرویس حذف شود اما Volume باقی بماند، اطلاعات قدیمی می‌تواند به‌صورت ناخواسته فضای Disk سرور را مصرف کند.


۲. پاک‌سازی کلی سرور باdocker system prune

این فرمان قوی‌ترین ابزار پاکسازی سطح بالا در داکر است.

پاک‌سازی منابع بلااستفاده:

docker system prune

پاک‌سازی عمیق — مناسب سرورهایی که فضای دیسک اشباع شده است

docker system prune -a

مواردی که حذف می‌شود:

  • تصاویر بدون استفاده (Unused Images)

  • کانتینرهای متوقف‌شده

  • شبکه‌های بدون استفاده

  • Build Cache

نکته امنیتی برای سرورها:

هرگز در محیط Production بدون بررسی از -a استفاده نکنید،
زیرا ممکن است تصویری که فعلاً در حال استفاده نیست، اما برای دیپلوی بعدی نیاز دارید، حذف شود.

پیشنهاد حرفه‌ای:
ابتدا بررسی کنید چه چیزهایی حذف می‌شوند:

docker system df

۳. مدیریت تخصصی تصاویر Docker روی سرور (Docker Images)

مشاهده تمام تصاویر:

docker images -a

حذف تصاویر بلااستفاده (Dangling):

docker image prune

حذف یک تصویر خاص:

docker rmi IMAGE_ID

حذف تمام تصاویر بلااستفاده روی یک سرور CI/CD:

docker rmi $(docker images -f "dangling=true" -q)

حذف تمامی تصاویر موجود روی سرور:

این فرمان معمولاً در مواردی مثل Reset کردن سرور یا Rebuild کامل رجیستری استفاده می‌شود:

docker rmi $(docker images -a -q)

نکته مهم برای سرورها:

اگر تصویری حذف شود که کانتینر در حال اجرا دارد، Docker مانع می‌شود.
برای حذف اجباری:

docker rmi -f IMAGE_ID

این دستور باید با احتیاط کامل استفاده شود.


۴. حذف کانتینرها در محیط سرور

فهرست کامل کانتینرها:

docker ps -a

حذف یک کانتینر مشخص:

docker rm CONTAINER_ID

حذف کانتینرهای متوقف‌شده (مناسب Production):

docker rm $(docker ps -a -f status=exited -q)

توقف و حذف همه کانتینرها:

این دستور معمولاً هنگام Reset کردن سرور استفاده می‌شود:

docker stop $(docker ps -a -q) docker rm $(docker ps -a -q)

نکته برای سرورها:

هرگز بدون بررسی کانتینرها را یک‌جا حذف نکنید.
کانتینرهای مانیتورینگ، لاگ‌گیری یا Database ممکن است متوقف شده باشند اما ضروری باشند.


۵. حذف ولوم‌ها (Volumes) — مهم‌ترین منبع مصرف فضای سرور

ولوم‌ها در سرورها خطرناک‌تر از تصاویر هستند، زیرا:

اگر حذف شوند، داده‌ها برگشت‌پذیر نیستند.

فهرست ولوم‌ها:

docker volume ls

شناسایی ولوم‌های Orphan:

docker volume ls -f dangling=true

حذف ولوم‌های بلاصاحب:

docker volume prune

حذف یک ولوم مشخص:

docker volume rm VOLUME_NAME

حذف ولوم همراه کانتینر:

docker rm -v CONTAINER_NAME

نکته خیلی مهم:

در سرورها معمولاً:

  • دیتابیس‌ها

  • کش‌ها

  • فایل‌های Persistent

در ولوم‌ها نگهداری می‌شوند.

هرگز بدون اطمینان از مصرف به‌روز، prune نزنید.


۶. پاکسازی پیشرفته برای سرورهای پرترافیک (CI/CD, GitLab Runner, Jenkins)

اگر سرور شما تعداد زیادی Build انجام می‌دهد:

پاک‌سازی Build Cache:

docker builder prune

یا پاکسازی کامل:

docker builder prune -a

پاک‌سازی تمامی منابع BuildKit:

docker buildx prune

۷. مقایسه تخصصی دستورات پاک‌سازی Docker

دستورسطح پاکسازیمناسب برای سرورریسک
docker rmکانتینرهامتوسطپایین
docker rmiتصاویرمتوسطمتوسط
docker volume rmولوم‌هاپایینبسیار بالا
docker image pruneتصاویر بلااستفادهبالاکم
docker system pruneهمه منابع بلااستفادهبالامتوسط
docker system prune -aحذف عمیقفقط مواقع اضطراریبالا
docker builder pruneBuild cacheبالاپایین

۸. بهترین استراتژی پاکسازی سرورهای Docker (پیشنهادی DevOps)

🔹 هر روز:

docker container prune

🔹 هر هفته:

docker image prune

🔹 هر ماه (فقط در صورت کمبود فضای دیسک):

docker system prune -a

🔹 هر ۳ ماه:

بکاپ → بررسی ولوم‌ها → حذف ولوم‌های Orphan

این استراتژی در اغلب دیتاسنترها استفاده می‌شود و کاملاً Production-Friendly است.


جمع‌بندی تخصصی

پاک‌سازی Docker در سرور فقط یک عملیات ساده نیست؛
بیشتر شبیه مدیریت منابع و امنیت داده است.

با اجرای اصولی دستورات زیر:

  • فضای سرور آزاد می‌شود

  • سرعت Deploy افزایش پیدا می‌کند

  • فشار I/O روی دیسک کاهش می‌یابد

  • از Crash شدن سرویس‌ها به خاطر پر شدن دیسک جلوگیری می‌شود

این مقاله یک راهنمای کامل برای مدیریت حرفه‌ای داکر در محیط‌های Server-Grade است.

 

[全部的: 0   平均的: 0/5]
发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢