دستورات پرکاربرد داکر

در این مقاله سعی میکنیم با دستورات بسیار پرکاربرد داکر آشنا شویم.

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

دستور pull

برای دانلود کردن یک تصویر (image) جدید میتوانید از دستور pull استفاده کنید. این دستور تمام لایه های یک تصویر را، در صورتی که قبلا روی ماشین شما دانلود نشده باشند، از کتابخانه داکر دانلود میکند:

    docker pull hub.elastico.io/library/debian

این نکته که تصاویر داکر میتوانند لایه های مشترک با یکدیگر داشته باشند تاثیر زیادی در افزایش سرعت دانلود و اجرای کانتینرها دارد.

دستور run

برای ایجاد یک کانتینر جدید و اجرای یک shell که به شما یک خط فرمان (command line) تازه در داخل همان کانتینر میدهد، میتوانید دستور زیر را اجرا کنید:

    docker run -ti --name my_container_name hub.elastico.io/library/debian /bin/bash

پارامتر -ti باعث میشود که کانتینر شما به محض اجرای دستور، که در این مثال /bin/bash است، خروجیهای آن را برای شما چاپ کند و در صورت نیاز منتظر ورودی از صفحه کلید بماند. در این حالت با خروج از این shell، مثلا با اجرای دستور exit، اجرای کانتینر نیز متوقف میشود.

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

    docker run --rm -ti hub.elastico.io/library/debian /bin/bash

در مقابل اگر بخواهید کانتینری به محض اجرا به پس زمینه برود و همچنان به اجرای دستور ادامه دهد میتوانید از پارامتر -d استفاده کنید:

    docker run -d --name my_server hub.elastico.io/library/nginx

دقت کنید که در این حالت کانتینر شما تا زمانی که اجرای دستور به پایان نرسد یا شما آن را متوقف نکنید در حال اجرا باقی میماند.

دستور ps

این دستور کانتینرهای در حال اجرا را به شما نشان میدهد:

    docker ps

همچنین اگر از پارامتر -a استفاده کنید میتوانید کانتینرهای متوقف شده را نیز مشاهده کنید.

دستور logs

برای دیدن خروجی یک کانتینر در حال اجرا میتوانید دستور زیر را بکار ببرید:

    docker logs my_server

اگر میخواهید منتظر بمانید تا خروجیهای جدید را به محض تولید شدن مشاهده کنید میتوانید از پارامتر -f استفاده کنید.

دستور exec

اگر کانتینری در حال اجرا باشد میتوانید با دستور زیر یک shell در داخل آن اجرا کنید که به شما یک خط فرمان در داخل همان کانتینر برای اجرای دستورات جدید میدهد:

    docker exec -ti my_server /bin/sh

این کار عموما برای خطایابی در زمان تست استفاده میشود و برای سیستمهای production توصیه نمیشود.

دستور stop

اگر کانتینری در حال اجرا باشد میتوانید با دستور زیر آن را متوقف کنید:

    docker stop my_server

دقت کنید که در این حالت اجرای کانتینر متوقف میشود ولی فایلهای آن همچنان روی سیستم باقی میمانند و قابل بازیابی هستند. با استفاده از دستور docker ps -a میتوانید کانتینر متوقف شده را نیز مشاهده کنید.

دستور kill

اگر کانتینری به دستور stop به خوبی پاسخ ندهد، یعنی اجرای آن متوقف نشود، میتوانید از این دستور برای توقف کامل آن استفاده کنید:

    docker kill my_server

در این حالت نیز همچنان فایلهای کانتینر روی سیستم باقی میمانند.

اگر مثلا در انتهای روز قصد دارید با یک دستور تمامی کانتینرهای روی سیستمتان را متوقف کنید، میتوانید این فرمان را اجرا کنید:

    docker kill $(docker ps -q)

دستور rm

این دستور فایلهای یک کانتینر متوقف شده را از روی سیستم پاک میکند:

    docker rm my_server

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

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

    docker rm $(docker ps -a -q)

دستور rmi

برای حذف یک تصویر (image) داکر که دیگر نیازی به آن ندارید این دستور را اجرا کنید:

    docker rmi my_image_name

در نهایت اگر روی سیستمتان با کمبود فضای دیسک سخت مواجه شده اید میتوانید با دستور زیر تمامی تصاویری را که به صورت موقت تولید شده اند و معمولا کاربرد دایمی ندارند پاک کنید:

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

اگر به هنگام اجرای کانتینرها با مشکلاتی برای دانلود image ها از Docker Hub مواجه شدید، میتوانید با تنظیم یک mirror به صورتی که در این گروه گفته شده، دوباره این کار را امتحان کنید.