آموزش حذف کانتینر و ایمیج های داکر

چگونه Imageها، کانتینرها و دیگر موارد بی‌استفاده در داکر را حذف کنیم؟

داکر ابزاری است که بسته‌بندی اپلیکیشن‌ها و سرویس‌ها در کانتینر را آسان می‌کند. در پی این تسهیل‌سازی، اجرای آن‌ها از هرجایی به‌آسانی صورت می‌گیرد. درکنار استفاده از داکر، امکان انباشته‌شدن حجم زیادی ایمیج و کانتینر و دیتای اضافی نیز وجود دارد که باعث درهم‌ریختگی output و فضای دیسک مصرفی می‌شوند. به‌همین‌دلیل، بهتر است که Imageهای بدون استفاده و کانتینرها را از داکر حذف کنید.

Docker تمام ابزارهای موردنیاز برای پاک‌سازی سیستم‌ خود با استفاده از Command line را دراختیارتان قرار می‌دهد. در این مقاله، قصد داریم روش استفاده از این ابزارها برای حذف Image و کانتینر از داکر را به شما آموزش دهیم.

نکته‌ای برای استفاده از این راهنما

قبل از هرچیزی، بهتر است این نکته را بگوییم که دستورِ substitution syntax و (command $ (command به‌عنوان دستوری متداول در شل‌های محبوبی مانند bash و zsh و Windows Powershell موجود است.

مروری بر داکر (Docker) و کانتینر (Container)

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

این تکنولوژی را با استفاده از ماشین مجازی می‌توانید پیاده‌سازی کنید. ماشین مجازی برنامه‌های مختلف را روی سخت‌افزاری جدا از هم نگه‌داری می‌کند. در این شرایط، استفاده از منابع سخت‌افزاری به‌دلیل اینکه فعالیت برنامه‌ای تأثیری بر دیگری نمی‌گذارد، به کمترین حالت ممکن خود می‌رسد. Container دقیقاً مقابل ماشین مجازی قرار دارد و به جایگزین و البته رقیبی جدی برای ماشین‌های مجازی تبدیل شده است.

کانتینر محیط‌های اجرایی را از یکدیگر جدا می‌کند و هسته سیستم‌عامل را به‌اشتراک‌ می‌گذارد. یکی از مزیت‌های Container درمقایسه‌ با ماشین‌های مجازی این است که به منابع کمتری نیاز دارد و بسیار سریع‌تر از ماشین مجازی قابلیت اجرا پیدا می‌کند. کانتینر به سه بخش سازنده (Builder) و موتور (Engine) و تنظیم (Orchestration) تقسیم می‌شوند.

آموزش حذف Imageها، کانتینرها، volumes و شبکه‌های استفاده‌نشده از داکر

داکر کامندی واحد را برای پاک‌کردن تمامی منابع بدون تگ، از‌جمله Imageها و کانتینرها و شبکه‌ها ارائه می‌کند:

$ docker system prune

برای حذف هرگونه کانتینر و ایمیجِ فاقد کاربرد، کافی است فلگِ a- را به دستور اضافه کنید:

$ docker system prune -a
حذف کانینر و image از داکر

حذف کانتینر و imageهای بلااستفاده از داکر

حذف Imageهای داکر

حذف یک یا چند Image خاص

از دستور docker images به‌همراه a- برای پید‌اکردن ID ایمیج‌هایی استفاده کنید که قصد دارید آن‌ها را حذف‌ کنید. این دستور به شما هر Image از‌جمله لایه‌های میانی را نشان خواهد داد.

زمانی که Imageهای مدنظر برای حذف‌کردن را پیدا کردید، می‌توانید ID یا تگ آن‌ها را به docker rmi ارسال کنید:

لیست:

$ docker images -a

حذف:

$ docker rmi Image Image

حذف ایمیج‌های اضافی (Dangling images)

Imageهای داکر از چند لایه تشکیل شده‌اند. ایمیج‌های بی‌استفاده (Dangling images) لایه‌هایی هستند که هیچ ارتباطی با هیچ ایمیج تگ‌گذاری‌شده‌ای ندارند. این Imageها بی‌فایده‌ و بی‌هدف هستند و فقط فضای دیسک را مصرف می‌کنند. آن‌ها را می‌توان با افزودن فلگ فیلتر f- با مقدار dangling=true به دستور docker images پیدا کرد.

نکته: اگر ایمیجی را بدون تگ بسازید، در فهرست Imageهای آویزان (Dangling images) قرار می‌گیرد؛ زیرا هیچ ارتباطی با ایمیج تگ‌شده نخواهد داشت. بنابراین با ارائه یک تگ در هنگام ساخت، می‌توانید از این وضعیت جلوگیری کنید. بدین‌منظور به‌کمک دستور docker tag یک ایمیج را برچسب‌گذاری کنید.

وقتی از حذفِ این Imageها مطمئن شدید، می‌توانید از دستور docker image prune استفاده کنید:

لیست:

$ docker images -f dangling=true

حذف:

$ docker image prune

حذف Imageها براساس Pattern

با استفاده از دستورهای ترکیبی docker images و grep، می‌توانید تمام ایمیج‌های مطابق با یک الگو را بیابید و آن‌ها را با استفاده از awk حذف و IDها را به docker rmi منتقل کنید. البته قبل از هرچیزی توجه کنید که این ابزارها را داکر ارائه نمی‌کند و لزوماً در تمام سیستم‌ها در‌دسترس نخواهند بود:

لیست:

$ docker images -a | grep "pattern"

حذف:

$ docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
حذف image در داکر

آموزش حذف imageهای داکر

حذف‌کردن تمام Imageها

تمام Imageهای داکر در یک سیستم را می‌توان با افزودن a- به دستور docker images فهرست کرد. درصورت نیاز به حذف تمامی ایمیج‌ها،  پرچم q- را اضافه کنید تا ID ایمیج را به docker rmi فرستاده شود:

لیست:

$ docker images -a

حذف:

$ docker rmi $(docker images -a -q)

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

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

از دستور docker ps با پرچم a- برای پیداکردن نام یا ID کانتینرهای موردنیاز برای حذف استفاده کنید:

لیست:

$ docker ps -a

حذف:

$ docker rm ID_or_Name ID_or_Name

حذف‌کردن یک کانتینر بعد از اتمام کار و خروج

در‌صورتی‌که نمی‌خواهید کانتینر ایجاد‌شده را بعد از اتمام کار نگه دارید، می‌توانید docker run –rm را اجرا کنید. با این کار، به‌طور خودکار هنگام خروج آن کانتینر را حذف خواهید کرد.

اجرا و حذف:

$ docker run --rm image_name

پاک‌کردن تمام کانتینرهای خروجی

شما می‌توانید کانتینرها را با استفاده از docker ps -a پیدا و بر‌اساس وضعیت، آن‌ها را فیلتر کنید: created ،restarting ،running ،paused یا exited. به‌منظور بررسی فهرست کانتینرهای خارج‌شده، از پرچم f- برای فیلتر براساس وضعیت استفاده کنید. وقتی حذف آن‌ها را تأیید کردید، از -q برای ارسال ID‌ به دستور docker rm بهره ببرید:

لیست:

$ docker ps -a -f status=exited

حذف:

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

حذف کانتینرها با بیش از یک فیلتر

فیلترهای داکر را می‌توان با تکرار flag فیلتر با یک Additional value ترکیب کرد. همین امر به ایجاد فهرستی از کانتینرها منجر می‌شود که هریک از آن‌ها چنین شرایطی دارند. برای مثال، اگر می‌خواهید تمام کانتینرهایی را حذف کنید که به‌عنوان created (حالتی که هنگام اجرای کانتینر با دستور نامعتبر ایجاد می‌شود) یا exited علامت‌گذاری شده‌اند، باید از دو فیلتر استفاده کنید:

لیست:

$ docker ps -a -f status=exited -f status=created

حذف:

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

حذف کانتینرها طبق یک Pattern

شما می‌توانید تمام کانتینرهایی که با یک الگو مطابقت دارند، با استفاده از دستورهای ترکیبی docker ps و grep پیدا کنید. برای حذف فهرست مدنظر از awk و برای ارائه ID به docker rm از xargs استفاده کنید. البته توجه کنید که این ابزارها را Docker ارائه نمی‌کند و لزوماً در تمام سیستم‌ها دردسترس نیستند:

لیست:

$ docker ps -a | grep "pattern”

حذف:

$ docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm
پاک کردن کانتینرها در داکر

آموزش حذف کانتینرهای داکر

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

تمام کانتینر‌های سیستم خود را می‌توانید با استفاده از docker ps بررسی کنید. با افزودن پرچم a- تمام کانتینرها نمایش داده می‌شوند. زمانی که قصد داشتید آن‌ها را حذف کنید، پرچم q- را می‌توانید برای ارائه شناسه‌ها (IDها) به دستورهای docker stop و docker rm اضافه کنید:

لیست:

$ docker ps -a

حذف:

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

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

حذف یک یا چند Volumes خاص – Docker 1.9 و جدیدتر

از دستور docker volume ls به‌منظور پیدا‌کردن نام Volume‌های مدنظر برای حذف استفاده کنید. سپس یک یا چند Volume را می‌توانید با استفاده از دستور docker volume rm حذف کنید:

لیست:

$ docker volume ls

حذف:

$ docker volume rm volume_name volume_nam
 

حذف یک یا چند Volum خاص در نسخه‌های داکر ۱.۹ و جدیدتر

ازآن‌جاکه هدف Volume‌ها مستقل‌بودن از کانتینرها است، با برداشتن یکی از آن‌ها، Volume به‌صورت خودکار حذف نخواهد شد. زمانی که یک ولوم وجود دارد و به هیچ کانتینری متصل نیست، به آن ولوم Dangling گفته می‌شود. برای تعیین مکان‌ آن‌ها و تأیید اینکه می‌خواهید آن‌ها را حذف کنید یا خیر، می‌توانید از دستور docker volume ls به‌همراه یک فیلتر استفاده کنید. با این کار، نتایج را به ولوم‌های Dangling محدود خواهید کرد. حال تمام این فهرست را می‌توانید با استفاده از دستور docker volume prune حذف کنید:

لیست:

$ docker volume ls -f dangling=true

حذف:

$ docker volume prune

حذف یک کانتینر و Volume آن

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

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

حذف:

$ docker rm -v container_name

کلام آخر

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

سؤالات متداول

1. داکر چیست؟

Docker پلتفرمی متن‌باز است که مبتنی‌بر سیستم‌عامل لینوکس راه‌اندازی شده و با آن می‌توان پکیج‌بندی اپلیکیشن‌ها را به‌سادگی انجام داد.

2. آیا حذف Imageها و ولوم‌ها و کانتینرهای داکر سخت است؟

خیر، شما با استفاده از کدهایی که در این مطلب گفتیم‌، Imageها و ولوم‌ها و کانتینرهای بدون استفاده و Dangling را می‌توانید حذف کنید.

4. کدام Imageها و کانتینر و ولوم‌های داکر را باید حذف کنیم؟

به‌طور‌کلی، به‌منظور استفاده بهتر از فضای دیسک، Imageها و ولوم و کانتینرهای بدون استفاده داکر باید حذف شوند.

5. چرا Imageها و کانتینر و ولوم‌های داکر را باید حذف کنیم؟

به‌‌منظور جلوگیری از مصرف بیش‌از‌حد دیسک، باید Imageها و کانتینر و ولوم‌های داکر را حذف کنید.

  • با خدمات ابری پارس آشنا شوید

    اولین ارائه‌دهنده خدمات رایانش ابری در ایران هستیم

    ابر سرور

    ابر سرور

    با ابرسرورها می‌توانید سرور با سیستم‌عامل دلخواه خود را در چند دقیقه انتخاب و نصب نموده و آزادانه منابع سخت‌افزاری که در نظر دارید را، در زمان دلخواه به سرور خود بیافزایید و تنها برای منابع مورد نیاز سرور، هزینه پرداخت نمایید.

    هایبرید سرور

    هایبرید سرور

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

    ماکرو سرور

    ماکرو سرور

    ماکرو سرور محصولی ویژه است که برای دریافت بالاترین کیفیت سخت‌افزاری طراحی شده است. در شرایطی که نیازمند سخت‌افزاری قدرتمند برای سرور خود هستید، ماکرو سرورها منابع سخت‌افزاری مورد نیاز را برای شما فراهم می‌کنند.

    هاست ابری

    هاست ابری

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

    هاست دانلود

    هاست دانلود

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

    مطالعه این مطالب نیز پیشنهاد می‌شود

    مقالات و نظرات اعضای تیم ما درباره تکنولوژی، روزهای کاری و چیزای دیگر…

  • کلیه حقوق برای پارس پک محفوظ می باشد.

    Copyright © 2022 ParsPack Cloud Computing Technology ® , All Rights Reserved.