تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

نحوه حذف ایمیج (image)، کانتینر (container) و والیوم (volume) در داکر Docker در سرور مجازی


۲۷ دی ۱۴۰۳

مقدمه

داکر (Docker) این امکان را فراهم می‌کند که برنامه‌ها و سرویس‌های خود را در کانتینرها (Containers) سازمان‌دهی کنید تا بتوانید آنها را در هر جایی، اجرا کنید. اما هنگام کار با داکر، به‌راحتی ممکن است تعداد زیادی ایمیج (Image)، کانتینر (Container) و والیوم (Volume) غیرقابل استفاده جمع شود که باعث شلوغی خروجی و مصرف فضای دیسک، خواهد شد.

داکر، تمام ابزارهای مورد نیاز برای پاکسازی سرور مجازی لینوکس از این موارد را در اختیار شما قرار می‌دهد. این مقاله به‌صورت یک cheat sheet (برگه تقلب) طراحی شده و دستورات مفیدی را برای آزاد کردن فضای دیسک و سازماندهی سرور مجازی با حذف imageها، کانتینرها و والیوم‌های غیرقابل استفاده، ارائه می‌دهد.

در ادامه، بخوانید:

  • نحوه پاکسازی تمامی ایمیج‌ها (Images)، کانتینرها (Containers)، والیوم‌ها (Volumes) و شبکه‌های (Networks) غیرقابل استفاده یا معلق
  • نحوه حذف داکر ایمیج‌ها (Docker Images)
  • حذف کانتینرها (Containers)
  • حذف حجم‌ها (Volumes)
  • نتیجه‌گیری
  • سوال‌های پرتکرار

نحوه پاکسازی تمامی ایمیج‌ها (Images)، کانتینرها (Containers)، والیوم‌ها (Volumes) و شبکه‌های (Networks) غیرقابل استفاده یا معلق

داکر یک دستور واحد ارائه می‌دهد که می‌تواند تمامی منابع – یعنی Imageها، کانتینرها (Containers)، والیوم‌ها (Volumes) و شبکه‌ها (Networks)— را که معلق (Dangling) هستند (یعنی بدون تگ یا ارتباط با کانتینر هستند) پاک کند:

docker system prune

برای حذف کانتینرهای متوقف‌شده و تمامی imageهای غیرقابل استفاده (و نه فقط imageهای معلق)، از فلگ -a استفاده کنید:

docker system prune -a

نحوه حذف داکر ایمیج‌ها

حذف یک یا چند تا ایمیج مشخص

برای مشاهده شناسه imageهای مورد نظرتان، از دستور زیر استفاده کنید که تمامی imageها، از جمله لایه‌های میانی را نشان می‌دهد:

docker images -a

برای حذف imageها، شناسه یا تگ آن‌ها را در دستور زیر، قرار بدهید:

docker rmi <Image_ID> <Image_ID>

توجه: فلگ -a یا --all در دستور docker images تمامی ایمیج‌ها، از جمله imageهای Intermediate را نمایش می‌دهد که هیچ تگی ندارند. استفاده از این فلگ به شناسایی imageهایی که فضای دیسک را اشغال کرده‌اند و قابل حذف هستند، کمک می‌کند.

حذف imageهای معلق (Dangling Docker Images)

imageهای معلق لایه‌هایی هستند که هیچ ارتباطی با imageهای تگ‌شده ندارند. این imageها با فلگ -f و مقدار dangling=true، قابل مشاهده هستند:

docker images -f dangling=true

برای حذف آن‌ها از دستور زیر استفاده کنید:

docker image prune

نکته: اگر یک image بدون تگ‌گذاری ساخته شود، در لیست imageهای معلق ظاهر خواهد شد. برای جلوگیری از این وضعیت، هنگام ساخت image، تگ آن را مشخص کنید یا بعداً از دستور docker tag استفاده کنید.

حذف imageها بر اساس یک الگو (Pattern)

برای یافتن imageهای مطابق با یک الگوی خاص، مانند دستور زیر عمل کنید:

docker images -a |  grep "pattern"

برای حذف آن‌ها، از دستور زیر استفاده کنید:

docker images -a | grep "pattern" | awk '{print $1":"$2}' | xargs docker rmi

حذف تمامی imageها

برای مشاهده تمامی imageها در سیستم، دستور زیر را اجرا کنید:

docker images -a

برای حذف تمامی imageها، از فلگ -q برای انتقال شناسه imageها به دستور docker rmi استفاده کنید:

docker rmi $(docker images -a -q)

حذف کانتینرها

حذف یک یا چند کانتینر خاص

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

docker ps -a

برای حذف آن‌ها:

docker rm <ID_or_Name> <ID_or_Name>

حذف یک کانتینر پس از خروج (Upon Exiting)

اگر مطمئن هستید که پس از اجرای کانتینر، دیگر به آن نیازی نخواهید داشت، می‌توانید از دستور docker run --rm استفاده کنید تا کانتینر به‌طور خودکار و پس از خروج، حذف شود:

docker run --rm <image_name>

حذف تمامی کانتینرهای متوقف‌شده (Exited Containers)

برای مشاهده لیست کانتینرهای متوقف‌شده، از فلگ -f برای فیلتر وضعیت استفاده کنید:

docker ps -a -f status=exited

برای حذف آن‌ها:

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

حذف کانتینرها با چندین فیلتر (More Than One Filter)

می‌توانید چندین فیلتر را با تکرار فلگ -f ترکیب کنید. به عنوان مثال، برای حذف تمامی کانتینرهایی که وضعیت آن‌ها created یا exited است:

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

حذف کانتینرها بر اساس الگو (Remove Containers According to a Pattern)

برای یافتن کانتینرهای مطابق با یک الگو، مانند دستور زیر عمل کنید:

docker ps -a |  grep "pattern”

برای حذف آن‌ها:

docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

متوقف‌کردن و حذف تمامی کانتینرها (Stop and Remove All Containers)

برای مشاهده تمامی کانتینرهای موجود در سیستم، از دستور زیر استفاده کنید:

docker ps -a

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

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

حذف والیوم‌ها (Removing Volumes)

حذف یک یا چند والیوم‌ خاص

برای پیدا کردن نام والیوم‌هایی که می‌خواهید حذف کنید، از دستور زیر استفاده کنید:

docker volume ls

برای حذف آن‌ها:

docker volume rm <volume_name> <volume_name>

حذف والیوم‌های معلق

از آنجا که والیوم‌ها از کانتینرها مستقل هستند، حذف یک کانتینر به‌طور خودکار والیوم‌ مرتبط با آن را حذف نمی‌کند. والیومی که دیگر به هیچ کانتینری متصل نیست، به عنوان والیوم‌ معلق شناخته می‌شود. برای مشاهده این والیوم‌ها، از دستور زیر استفاده کنید:

docker volume ls -f dangling=true

برای حذف تمامی والیوم‌های معلق:

docker volume prune

حذف یک کانتینر و والیوم‌ آن با هم

اگر والیوم‌ را، بدون نام ایجاد کنید، می‌توانید آن را هنگام حذف کانتینر با استفاده از فلگ -v حذف کنید. توجه داشته باشید که این روش تنها برای والیوم‌های بدون نام کار می‌کند. برای حذف:

docker rm -v <container_name>

توجه: اگر والیوم‌ بدون نام باشد، به‌طور خودکار و بدون هیچ اخطاری حذف می‌شود. اگر والیوم‌ نام‌گذاری شده باشد، همچنان در سیستم باقی می‌ماند.

نتیجه‌گیری

این راهنما برخی از دستورات رایج برای حذف ایمیج‌ها، کانتینرها (containers) و volumes با Docker را پوشش می‌دهد. دستورات فوق، به سرور مجازی لینوکسی منتهی نمی‌شود و شما می‌توانید در هر سیستم‌عامل دیگر (مانند ویندوز و MacOS) که Docker بر روی آن نصب شده است؛ دستورات فوق را اجرا و استفاده کنید.

اگر به دنبال راهکاری ساده و سریع برای اجرای برنامه‌های مبتنی بر Docker هستید، هاست داکر لیارا انتخابی بی‌نظیر است. این سرویس به شما امکان می‌دهد بدون درگیر شدن با پیچیدگی‌های دستورات Docker، برنامه‌های خود را به راحتی مستقر کنید. مستندات جامع و فارسی لیارا نیز تمام مراحل کار را به‌صورت گام‌به‌گام به شما توضیح می‌دهد. با زیرساخت قدرتمند و پشتیبانی حرفه‌ای، هاست داکر لیارا ابزاری مناسب برای توسعه‌دهندگان و تیم‌های نرم‌افزاری است.

برای کسانی که به کنترل و انعطاف بیشتری نیاز دارند، سرور مجازی لیارا گزینه‌ای ایده‌آل است. این سرویس با زیرساختی قدرتمند و سرعتی بالا، امکان مدیریت کامل سرور را در اختیار شما قرار می‌دهد. با سرور مجازی ایران لیارا می‌توانید برنامه‌های سفارشی خود را اجرا کرده و تنظیمات دلخواه را پیاده‌سازی کنید. این سرویس برای حرفه‌ای‌هایی که نیاز به آزادی عمل بیشتری دارند، بهترین انتخاب است. پشتیبانی سریع و مستندات فنی مناسب، تجربه‌ای روان و بی‌دردسر را برای کاربران تضمین می‌کند.

سوال‌های پرتکرار

۱. چگونه می‌توانم imageهای Docker را در سرور مجازی به طور کامل حذف کنم؟

docker rmi <image-id>

۲. چگونه imageهای استفاده‌نشده Docker را در سرور مجازی حذف کنم؟

برای حذف imageهای استفاده‌نشده (از جمله imageهای معلق یا بدون برچسب):

docker image prune

برای حذف تمام iamgeهای استفاده‌نشده، از گزینه --all استفاده کنید:

docker image prune --all

۳. چگونه می‌توانم تمام imageها و کش Docker را در VPS پاک کنم؟

docker system prune --all --volumes

توجه: دستور فوق، همه‌چیز مرتبط با داکر را پاک می‌کند، پس با دقت استفاده کنید.

۴. چگونه فایل‌ها را از یک image در Docker در سرور مجازی، حذف کنم؟

امکان ویرایش مستقیم یک تصویر Docker وجود ندارد. برای این کار باید در ابتدا یک کانتینر از روی image مورد نظر ایجاد و اجرا کنید:

docker run -it <image-id> /bin/bash

سپس، فایل‌های مورد نظر را در داخل کانتینر حذف کنید و تغییرات را به عنوان یک image جدید ذخیره کنید:

docker commit <container-id> <new-image-name>

۵. چگونه تمام کانتینرهای متوقف شده Docker را در سرور مجازی دائمی، حذف کنم؟

docker container prune

برای حذف بدون نیاز به ثبت تأییدیه:

docker container prune -f

۶. چگونه کانتینرهای قدیمی Docker را در VPS، حذف کنم؟

برای حذف کانتینرهایی که وضعیت exited یا created دارند، در ابتدا لیست آن‌ها را مشاهده کنید:

docker ps -a --filter "status=exited" --filter "status=created"

سپس، آن‌ها را حذف کنید:

docker rm $(docker ps -a -q --filter "status=exited" --filter "status=created")

۷. imageهای Docker در سرور مجازی لینوکس در کجا، ذخیره می‌شوند؟

imageهای Docker به صورت پیش‌فرض در دایرکتوری Docker سیستم شما ذخیره می‌شوند:

/var/lib/docker

اگر که از سرور مجازی استفاده نمی‌کنید و به صورت کلی، کاربر ویندوز هستید، imageها در مسیر C:\ProgramData\DockerDesktop (در VM نسخه WSL2) و اگر که کاربر MacOS هستید، imageها در داخل VM در Docker Desktop، ذخیره می‌شوند.

برای مشاهده دقیق محل ذخیره‌سازی و درایور استفاده‌شده، دستور زیر را، اجرا کنید:

docker info | grep "Docker Root Dir"

۸. چگونه یک کانتینر را بعد از اجرا به طور خودکار حذف کنم؟

برای حذف خودکار یک کانتینر پس از توقف، هنگام اجرای کانتینر از فلگ --rm استفاده کنید:

docker run --rm <image-id>

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

همچنین بخوانید: نحوه نصب وب سرور آپاچی Apache روی سرور مجازی لینوکس Linux یا VPS

ســــــــــــــــــــــال‌هاست که هستیم

۶ سال در کنار شما تجربه جمع کردیم. تازه در ابتدای مسیر هستیم، مسیر ساخت آینده.

sixth

جمع‌مـــــــــــان، جمع است

بیش از ۴۰ هزار توسعه‌دهنده و صاحبان کسب و کار در جمع ما هستند. جای شما خالی‌ست...

usersnumberusers

خدمات رایگان لیارا

۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

هاست رایگان برای دیتابیس‌هاست رایگان برای دیتابیس‌

دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

سرویس DNS رایگانسرویس DNS رایگان

به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

۱۰۰ هزار تومان اعتبار اولیه۱۰۰ هزار تومان اعتبار اولیه

بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماهارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید. (به‌همراه دسترسی SMTP)

هاست رایگان برای انواع وبسایتهاست رایگان برای انواع وبسایت

تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

همراه شما هستیم

در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
تلفن واحد فروش:
۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
call
تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)