Docker یک فناوری کانتینریسازی نرمافزاری است که به توسعهدهندگان کمک میکند تا برنامهها را در پلتفرمهای متفاوت از دسکتاپ گرفته تا فضای ابری ایجاد و استقرار دهند.
یک عکس فوری – یا طرح اولیه – از کد منبع، وابستگیها و ابزارهای مورد نیاز برای ساخت یک برنامه کاربردی در ظرف Docker به عنوان تصویر شناخته میشود. برنامههای Docker که به دادههای پایدار نیاز دارند، میتوانند به فضای ذخیرهسازی به نام حجمهایی که مستقل از سیستم عامل اصلی هستند، تکیه کنند.
سازماندهی موثر تصاویر، حجم ها و کانتینرها هنگام استفاده از Docker مهم است. تجسم های استفاده نشده از این دارایی ها می توانند انباشته شوند، فضای ارزشمند دیسک را اشغال کنند و در نهایت بر عملکرد سیستم تأثیر بگذارند.
این مقاله راههای مختلف برای حفظ سازماندهی سیستم را با پاک کردن تصاویر (هم به صورت جداگانه و هم همزمان)، حجمها و کانتینرها بررسی میکند. و ما از آن استفاده خواهیم کرد docker
رابط خط فرمان (CLI) برای انجام سریع این وظایف.
نحوه حذف تصاویر داکر
حذف تصاویر منسوخ یا غیر ضروری از Docker برای حفظ یک سیستم تمیز و سازمان یافته ضروری است. بیایید ببینیم که چگونه CLI می تواند تصاویر خاصی را برای حذف هدف قرار دهد.
ابتدا بیایید به تصاویر در محیط Docker با the docker image ls
دستور:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
my_image latest 2cbc27836df4 60 seconds ago 7.05MB
<none> <none> 85b412789704 2 days ago 7.05MB
demo latest 26d80cd96d69 15 months ago 28.5MB
لیست تصاویر بالا، تصاویر نامگذاری شده را نشان می دهد my_image و نسخه ی نمایشی، هر دو تگ شده آخرین. تصویر سوم هیچ نام یا برچسبی ندارد. در این مورد، این یک تصویر “آویزان” است: تصویری که در حال حاضر توسط یک ظرف استفاده نمی شود. این تصویر آویزان ناشی از بازسازی است my_image (یک سناریوی رایج). نسخه قبلی تصویر هنوز در سیستم فایل است، اما در حال حاضر استفاده نمی شود.
این فهرست همچنین 12 کاراکتر اول شناسه 64 نویسهای هر تصویر، تاریخ ایجاد و فضای ذخیرهسازی که تصاویر مصرف میکنند را نشان میدهد.
حذف تمام تصاویر استفاده نشده
در مثال فهرست بالا، ما یک تصویر آویزان داریم. با این حال، ممکن است یک تصویر بدون نام یا برچسب فعال باشد. برای مثال، میتوان از آن برای راهاندازی یک کانتینر با ارجاع به شناسه آن استفاده کرد.
برای حذف ایمن همه تصاویری که واقعا آویزان هستند، میتوانید از آن استفاده کنید docker image prune
دستور:
$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:85b412789704c17e9c5e7edc97b2f64c748bbdae7eaa44d3fe2cc21a87acad3d
Total reclaimed space: 7.05MB
ما دوباره تصاویر خود را لیست می کنیم تا نتایج کار خود را ببینیم:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
my_image latest 2cbc27836df4 70 seconds ago 7.05MB
demo latest 26d80cd96d69 15 months ago 28.5MB
پس از فرآیند هرس، تصویر بدون نام یا برچسب ناپدید می شود.
یک تصویر خاص را بر اساس نام حذف کنید
شما می توانید یک تصویر را با ارجاع به نام آن برای حذف هدف قرار دهید:
$ docker image rm <image_name>
توجه داشته باشید: شما نمی توانید به راحتی تصاویری را که هنوز در حال استفاده هستند حذف کنید. باید ظروف در حال اجرا را که از تصاویر استفاده می کنند متوقف یا حذف کنید. در حالی که معمولاً توصیه نمی شود، می توانید با استفاده از آن یک تصویر فعال را حذف کنید -f
پرچم:
$ docker image rm <image_name> -f
استفاده از علامت کوتاه rmi برای حذف تصاویر
Docker CLI یک رویکرد کوتاه نویسی برای حذف تصاویر در نام مستعار دارد rmi
. استفاده از آن برای حذف یک تصویر با نام به صورت زیر است:
$ docker rmi demo
Untagged: demo:latest
Deleted: sha256:2cbc27836df4a7707e746e28368f1fdecfefbfb813aae06611ca6913116b80b4
استفاده خواهیم کرد rmi
برای نمونه های حذف تصویر زیر.
حذف تمام تصاویر بدون برچسب
تصاویر بدون برچسب هنوز فضای دیسک ارزشمندی را اشغال می کنند که در طول زمان سرعت سیستم شما را بیشتر و بیشتر کند می کند.
برای حذف تمام تصاویر بدون برچسب در Docker، از docker rmi
دستور با فیلتر شما می توانید فیلترها را بر اساس معیارهای خاص با استفاده از -f
گزینه (با گزینه اشتباه گرفته نشود -f
پرچم موجود برای image rm
برای اجبار یک عمل).
فیلتر dangling=true
برای شناسایی تصاویر بدون برچسب استفاده می شود:
$ docker rmi $(docker images -f "dangling=true" -q)
را -q
گزینه در دستور بالا شناسه تصویر تمام تصاویر بدون برچسب را نمایش می دهد. سپس همه این شناسه ها به عنوان آرگومان ارسال می شوند docker rmi
برای حذف آنها
این فیلتر از کلمه کلیدی “آویزان” استفاده می کند، اما همانطور که در بالا ذکر شد، برخی از تصاویر بدون برچسب ممکن است در واقع فعال باشند. اگر تصویر انتخاب شده توسط این فیلتر واقعاً آویزان نباشد به شما هشدار داده می شود.
حذف یک تصویر خاص با شناسه
می توانید استفاده کنید docker rmi
دستور حذف هر تصویر خاص با ارجاع به شناسه آن:
$ docker rmi <image_id>
یک تصویر خاص را با نام و برچسب حذف کنید
شما می توانید یک تصویر خاص را به همراه نام و برچسب آن با استفاده از آن حذف کنید docker rmi
فرمان
به عنوان مثال، اگر چندین تصویر با یک نام اما برچسب های متفاوت دارید، می توانید با استفاده از این فرمت، یک تصویر خاص را حذف کنید:
$ docker rmi <image_name>:<tag>
این روش زمانی مفید است که بخواهید به جای حذف تمام تصاویر مربوط به یک مخزن، نسخه خاصی از یک تصویر را حذف کنید.
تمام تصاویر را با آخرین برچسب حذف کنید
در داکر، برچسب “آخرین” به جدیدترین نسخه یک تصویر داکر خاص اشاره دارد. آخرین تگ اغلب به عنوان تگ پیش فرض برای تصاویر داکر استفاده می شود. به طور خودکار به جدیدترین ساخت یک تصویر اختصاص داده می شود مگر اینکه تگ دیگری به صراحت مشخص شده باشد.
Docker دستوری برای حذف تمام تصاویر با برچسب “آخرین” ارائه می دهد:
$ docker rmi $(docker images | grep "latest" | awk '{print $3}')
دستور بالا به 2 قسمت تقسیم می شود. ابتدا لیست شناسه های تصویر را دریافت می کند و سپس این لیست را به عنوان یک آرگومان به آن ارسال می کند docker rmi
فرمان
تصاویر را از یک مخزن از راه دور حذف کنید
برای حذف یک تصویر از یک مخزن راه دور، مانند Docker Hub، ابتدا باید با استفاده از Docker CLI وارد حساب کاربری خود شوید.
هنگامی که وارد سیستم شدید، فقط باید از آن استفاده کنید docker rmi
دستور حذف تصویر را docker rmi
دستور می تواند تصاویر محلی و راه دور را حذف کند:
docker rmi my_repo/my_image_tag
قابل ذکر است، شما فقط می توانید تصاویری را که به مخزن فشار داده شده اند حذف کنید. به همین ترتیب، نمیتوانید تصاویری را که توسط کانتینرهای در حال اجرا استفاده میشوند حذف کنید.
چندین تصویر را از یک مخزن از راه دور حذف کنید
برای حذف چندین تصویر از یک مخزن راه دور، می توانید از docker rmi
دستور به دنبال شناسه یا برچسب تصویر. مثلا:
docker rmi my_repo/image_tag_1 my_repo/image_tag_2 my_repo/image_tag_3
با این کار سه تصویر دارای برچسب حذف می شوند image_tag_1
، image_tag_2
، و image_tag_3
از مخزن my_repo
.
نحوه حذف حجم های Docker
حجم های Docker می توانند فضای دیسک زیادی را اشغال کنند، به خصوص اگر حاوی مقادیر زیادی داده یا چندین نسخه پشتیبان باشند. با حذف حجمهایی که دیگر مورد نیاز نیستند، خطر نقض دادهها را کاهش میدهید و مطمئن میشوید که دادههای حساس برای کاربران غیرمجاز قابل دسترسی نیستند. حذف منظم حجم ها همچنین می تواند محیط Docker را به روز نگه دارد و از مشکلات ناشی از داده های قدیمی جلوگیری کند.
این دستورات به طور دائم تمام داده های ذخیره شده در یک حجم را از بین می برند، بنابراین با احتیاط از آنها استفاده کنید.
تمام حجم های استفاده نشده را حذف کنید
در Docker، حذف حجم های استفاده نشده به اندازه حذف تصاویر یا ظروف حیاتی است.
برای آزاد کردن فضای ذخیرهسازی دیسک، میتوانید از docker volume prune
فرمان
یک جلد خاص را بر اساس نام حذف کنید
حذف یک حجم خاص در Docker برای حذف حجم های استفاده نشده مفید است. در اینجا دستور حذف یک حجم وجود دارد:
docker volume rm my_volume_name
با دستور بالا حجم my_volume_name حذف خواهد شد. اگر بخواهید یک حجم استفاده شده را حذف کنید، داکر خطایی ایجاد می کند. می توانید حجم های موجود را با استفاده از docker volume ls
فرمان
نحوه حذف ظروف داکر
همانطور که بیشتر با Docker کار می کنید، ممکن است بسیاری از کانتینرهای استفاده نشده را جمع آوری کنید که منابع دیسک را اشغال می کنند. اگر آنها را حذف نکنید، آنها می توانند در طول زمان جمع شوند و منابع ارزشمند دیسک را اشغال کنند، سیستم شما را کند کرده و احتمالاً شما را در معرض خطر قرار می دهد.
تمام ظروف متوقف شده را بردارید
دستور docker container prune
می تواند تمام کانتینرهای متوقف شده در Docker را حذف کند. در اینجا، دستور فهرستی از تمام کانتینرهای متوقف شده را ایجاد می کند که حذف خواهند شد و قبل از ادامه درخواست تأیید می کند. این به بازیابی فضای دیسک و حفظ یک محیط Docker تمیز و سازماندهی شده کمک می کند و در عین حال به شما امکان می دهد تا بررسی کنید که چیز مهمی را از دست نمی دهید:
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
4df4c47c4df4
d35bcec20bce
توجه داشته باشید که فقط کانتینرهای متوقف شده را می توان با این دستور حذف کرد. اگر نیاز به حذف کانتینرهای در حال اجرا دارید، ابتدا باید آنها را متوقف کنید یا از دستور دیگری استفاده کنید.
یک کانتینر خاص را با شناسه حذف کنید
در Docker، میتوانید یک کانتینر خاص را با استفاده از ID حذف کنید docker rm command
به همراه شناسه کانتینر ابتدا، تمام شناسه کانتینر را با استفاده از docker ps command
:
$ docker ps -a -q
1ce3cdeb4035
06b79541e25c
fa98f1804e3e
$ docker rm 1ce3cdeb4035
دستور بالا فقط در صورتی کار می کند که کانتینر در حالت توقف باشد. اگر کانتینر در حال اجرا است، باید آن را با استفاده از پرچم -f به زور حذف کنید:
$ docker rm -f 1ce3cdeb4035
یک ظرف خاص را با نام حذف کنید
داکر چند منظوره را فراهم می کند docker rm
دستور حذف هر دو کانتینر با نام و شناسه.
برای مثال، اگر ظرفی به نام دارید وب_سرور، می توانید با استفاده از دستور زیر آن را حذف کنید:
$ docker rm web_server
اول، مهم است که ظرف را متوقف کنید. داکر فراهم می کند docker stop
دستور توقف یک ظرف خاص.
تمام ظروف در حال اجرا را بردارید
برای حذف تمام کانتینرهای در حال اجرا، می توانید از docker rm
دستور:
$ docker rm $(docker ps -q)
استفاده كردن docker ps -q
شناسه کانتینرهای در حال اجرا را فهرست می کند. پس از آن، شناسه ها به docker rm
دستور، که تمام کانتینرها را حذف می کند.
توجه داشته باشید که این دستور فقط کانتینرهای در حال اجرا را حذف می کند. اگر می خواهید همه کانتینرها، از جمله کانتینرهای متوقف شده را حذف کنید، می توانید به جای آن از دستور زیر استفاده کنید:
$ docker rm $(docker ps -a -q)
خلاصه
این مقاله نحوه حذف تصاویر، حجمها و کانتینرهای Docker را توضیح میدهد. شما روش های مختلفی را برای حفظ یک سیستم تمیز و سازمان یافته یاد گرفتید. این شامل دستوراتی برای حذف تمام تصاویر استفاده نشده، بدون برچسب یا خاص بر اساس شناسه یا نام بود. همچنین دستوراتی برای حذف همه کانتینرهای متوقف شده یا یک کانتینر خاص با شناسه یا نام را یاد گرفتید.
حذف تصاویر، حجم ها و کانتینرهای Docker یک فرآیند ساده است که می تواند به شما در مدیریت اجزای استفاده نشده، بازیابی فضای ارزشمند دیسک و اغلب بهبود عملکرد سیستم کمک کند.
همین سادگی است که توسعهدهندگان را به Docker جذب میکند، و هیچ راه سادهتری برای استقرار یک برنامه کاربردی توسعهیافته در Docker نسبت به پلتفرم Kinsta Application Hosting وجود ندارد. اکنون می توانید آن را به صورت رایگان امتحان کنید.
همه برنامه ها، پایگاه های داده و سایت های وردپرس خود را به صورت آنلاین و زیر یک سقف دریافت کنید. پلت فرم ابری پر از ویژگی ها و عملکرد بالا ما شامل موارد زیر است:
- راه اندازی و مدیریت آسان در داشبورد MyKinsta
- پشتیبانی تخصصی 24 ساعته
- بهترین سخت افزار و شبکه Google Cloud Platform که توسط Kubernetes برای حداکثر مقیاس پذیری ارائه شده است
- یک ادغام Cloudflare در سطح سازمانی برای سرعت و امنیت
- مخاطبان جهانی با حداکثر 35 مرکز داده و 275 PoP در سراسر جهان به دست میآیند
با یک آزمایش رایگان میزبانی برنامه یا میزبانی پایگاه داده ما شروع کنید. برنامه های ما را بررسی کنید یا با فروشندگان صحبت کنید تا بهترین مناسب خود را پیدا کنید.