حانیه مهدی ابادی
حانیه مهدی ابادی
خواندن ۷ دقیقه·۳ سال پیش

یکم کار با داکر

خب تو نوشته قبلی یکم با داکر اشنا شدیم (امیدوارم اشنا کرده باشه :) ) حالا چندتا دستور و با هم ببینیم ولی قبلش

image:

می تونیم اینجوری در نظر بگیریمش که همون برنامه هایی هستن که میخوایم نصب و اجرا کنیم در واقع container از رو همینا میسازیم و این برنامه ها درون کانتینر اجرا میشن

docker hub :

یه وبسایتی که خود داکر زده و یه منبع رسمیه که image هایی که میخواین توش پیدا کنید.

موقعی که یک image سرچ کنید ۳ نوع image براتون میاد .

  • نوع اول verified publisher : توسط توسعه دهندگان رسمی تأیید شده
  • نوع دوم official images : خود داکر نظارت رسمی روش داره
  • نوع اخر که هیچی ندارن توسط خود برنامه نویسا توسعه داده شدن

بعد برین توش و یه اکانت بسازین :)

خود داکر از این اینجا می تونید نصب کنید . برای شروع با دستور docker run میتونین اولین کانتینر خودتونو اجرا کنید

یه توقف : اگه به مشکل خوردین چون تحریمیم :)))))))))))) بیاین از سایت شکن کمک بگیرین و بعدش اگه خطای احراز هویت داشتین docker login بزنید و با یوزر و پس داکر هابتون وارد شین

docker run nginx

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


حالا اگه شما بیاید ۱۰ بار این دستور و اجرا کنید داکر میاد ۱۰ تا کانتینر متفاوت میسازه . ۱۰ تا کانتینری که اصلا هیچ ربطی به هم نداره و برای هر کدوم یه اسم رندوم میسازه .


docker ps با این دستور میتونین لیست کانتیر های در حال اجرا رو ببینید


docker ps -a برای دیدن لیست تمام کانتینرها حتی اونایی که در حال اجرا نیستن

الان من ۷ بار دستور اولو اجرا کردم و میبینین که که ۷ تا کانتینر متفاوت ساخته شده با نام های رندوم و انتخابی خود داکر

docker run --name test nginx با این دستور میتونین نام انتخابی خودتونو بدین
docker run rm test
با این دستور میتونیم کانتینر تست که در حال اجرا نیست و حذف کنیم برای حذف کانتینر در حال اجرا
docker rm -f test
که با حالت اجبار حذف میکنه

البته برای حذف کانتینر در حال اجرا باید اول اونو stop کنید بعد حذفش کنید که به اونم میرسیم .

docker container prune با دستور فوق میتوانید تمام کانتینر هایی که در حال اجرا نیستند را حذف کنید
docker run --name test --rm nginx
با این دستور کانتینر با اسم تست ساخته میشه و بعد از اینکه کارش تموم شد همون موقع حذف میشه و تو لیست ارشیو ها نمیره دیگه

حالا برای مثال من این دستور اجرا کردم که بعد چاپ hi کارش تموم شده ولی میخوام با یه ترمینالی به درون کانتینر وصل شم چندتا دستور بفرستم

-t : یک ترمینال جدید داخل کانتینر ایجاد می‌کند
-i : به شما اجازه می‌دهد با استفاده از ورودی استاندارد کانتینر یک ارتباط تعاملی برقرار کنید

تمام دستورات زیر با دستور بالا یکسان میباشد

docker run --interactive --tty ubuntu
docker run -i -t ubuntu

خب نکته ای که هست اینه ما وقتی یه کانتینر می سازیم به محض اینکه کارش تموم شد exit میشه ولی ما مثلا اینجا داریم از nginx استفاده میکنیم که یه سروره و میخوایم تو کل زمان کارمون در حالت اجرا باشه نه اینکه سریع خارج بشه برای این کار ما کانتینرمونو به عنوان یه detached container اجرا میکنیم

حالا Detached یعنی اینکه کانتینر ما تو حالت پس زمینه (background) داره اجرا میشه بدون اتصال به هیچ ورودی و خروجی

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

docker run --name test --detach nginx
docker run --name test2 -d nginx

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


چرخه زندگی کانتینرها:

تا الان دیدیم با docker run یه کانتینر میسازیم و میره تو حالت Up و بعد از اینکه کارش تموم میشه میره تو حالت Exited .

اینجا به معرفی چند دستور دیگه میرسیم

docker create --name test ubuntu

الان اینجا ما یه کانتینر به اسم تست ساختیم که تو حالت Created هست و هنوز run نیست پس میدونیم که Up هم نیست

خب برای اجرا کردن این کانتینر میایم از دستور زیر استفاده میکنیم

docker start test

دستور بالا کانتینر و اجرا میکنه و خب مثل همیشه وقتی کارش تموم شد ازش خارج میشه


docker stop test
docker kill test

این ۲ تا دستور معادل هم عمل میکنند و یه کانتینر که در حالت Up هست و stop میکنند اما فرقشون تو اینه که stop میزاره کانتینر کارش تموم شه بعد اونو stop میکنه ولی kill اصلا کاری نداره که کانتینر کارش تموم شده یا نه همون لحظه اونو stop میکنه (بعد میتونین اون کانتینر و حذف کنید هموم جوری که بالا گفتیم پایین بهش میرسیم :| )

docker restart test

این دستور میاد میبینه اگه کانتینر stop هست یه راست میبرتش run میکنه ولی اگه run هست میاد یه دور stop میکنه بعد میبره تو حالت run

docker pause test

کانتینری که run هست گفتیم تو حالت Up هست دیگه . اینجا میاد تو حالت Up متوقفش میکنه ولی stop نمیکنه فقط متوقف میکنه به شکل و STATUS دقت کنید

docker unpause test اینم معلومه چیکار میکنه :)))))


خب دوستان داکر خیلی گستردس این یه گوشه خیلی خیلی خیلی خیلی کوچیکی بود امیدوارم که گیج کننده نبوده باشه به بدردتون بخوره :))))) و ببخشید که طولانی شد .

داکرdocker
شاید از این پست‌ها خوشتان بیاید