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

مقدمه

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

برای درک مطالب و اجرای دستورات لازمه با داکر و دستورات اون برای اجرای کانتینر آشنایی داشته باشید و داکر روی سیستم شما نصب باشه. می‌تونید برای این منظور قسمت‌های قبل این دنباله رو ببینید. هم‌چنین با مفهوم سیگنال و فرستادن اون به پروسه‌ها در لینوکس آشنایی داشته باشید.


حذف تصویر

تو قسمت قبل pull کردن تصویر رو یاد گرفتیم. اگه بخوایم تصویری رو حذف کنیم از docker rmi استفاده میشه:

کلمه rmi رو با rm و i یاد داشته باشید. rm برای remove و i برای image. با docker images لیست تصاویر توی سیستم رو می‌بینم. همون طور که می‌بینید بعد از این دستور دیگه اون تصویر روی سیستم من نیست و اگر بخوامش باید دوباره دانلود کنم.

اگه یه کانتینر در حال اجرا از اون تصویر داشته باشم لازمه اول اون رو از بین ببرم تا بتونم تصویرش رو پاک کنم:

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


حذف کانتینر

وقتی کانتینری رو اجرا می‌کنم ممکنه بخوام حذفش کنم. قبلا هم دیدیم که کانتینرها پروسه‌‌های در حال اجرا هستند. پس به اونا میشه سیگنال فرستاد. با دستور docker stop به پروسه‌ی اصلی کانتینر سیگنال SIGTERM میفرسته تا خودش رو جمع و جور کنه و از بین بره. اگرم زیاد طول بکشه بعد چند ثانیه SIGKILL میفرسته و در جا از بین می‌بردش:

تو اینجا یه کانتینر در حال اجرا رو دیدید که stop شد و از کار افتاد. دیگه توی docker ps نمی‌بینمش چون در حال اجرا نیست. ولی اگر docker ps -a بزنم هستش. برای این که از اونجا هم پاک شه از docker rm استفاده میشه:

دیگه توی docker ps -a نیست. برای این دستورات لازم نیست از id کانتینر به شکل کامل استفاده کنیم. تا هر جا که بشه تشخیص داد (قابل تمایز از بقیه باشه) بنویسیم خودش میفهمه:

تو این دستور b هم می‌نوشتم می‌فهمید.

اگر خواستیم با اسم کانتینر رو حذف کنیم (یا هر دستور دیگه‌ای روش اجرا کنیم) می‌تونیم از auto completion با زدن TAB استفاده کنیم.

در کنار حذف کارهای دیگه‌ای هم میشه با کانتینر انجام داد. می‌تونیم با دستور docker pause سیگنال SIGSTOP رو به پروسه اصلی بفرستیم:

در بخش status وضعیت این کانتینر رو می‌بینید که متوقف شده.

میشه کانتینرها رو از این دو وضعیت در‌آورد. می‌تونم با docker unpause از وضعیت paused به حالت running در بیارمش. با docker start هم میشه یه کانتینر که stop شده رو اجرا کرد. برای مثال start رو ببینین:

اینجا اول کانتینر در حال اجرا نبود ولی با start اجرا شد. در کل اگر خواستین سیگنالی به کانتینر بفرستین از docker kill استفاده کنید که مثل kill در لینوکس عمل می‌کنه.


جمع بندی

در این قسمت دیدیم چطور میشه یک تصویر یا کانتینر رو از بین برد. هم‌چنین یاد گرفتیم میشه به پروسه‌های کانتینر سیگنال‌های مختلف رو فرستاد. امیدوارم استفاده کرده باشید. اگر سوال یا نظری دارید این پایین بفرمایید.

قسمت قبلی

قسمت بعدی