امروز یکی از مفاهیم اصلی در داکر را با هم یاد خواهیم گرفت. یعنی کانتینرسازی در داکر!
درجلسۀ پیش یادگرفتیم که داکر یک معماری microservice دارد و همچنین از ساختار client-server استفاده میکند. در این قسمت یاد خواهیم گرفت که چگونه میتوان در داکر کانتینرها را بوجود آورد.
مقدمه:
بعد از نصب داکر و دریافت اولین ایمیج حال ما میخواهیم از این ایمیج یک نمونه یا به عبارتی دیگر یک کانتینر از روی آن بالا بیاوریم. در واقع این کانتینر یک فضای کاملاً ایزوله را در اختیار ما قرار میدهد که همان ویژگیهای ایمیج را دارد با این تفاوت که همانطور که قبلاً گفتیم ایمیجها read-only هستند؛ به این معنا که ما تنها اجازۀ خواندن ایمیج را داریم. در واقع کانتینرها هستند که به ما این اجازه را میدهند تا بتوانیم به عنوان یک نمونه از ایمیج مورد نظر با آنها کار کنیم. حال بریم برای ساخت کانتینرها.
نحوۀ ساخت کانتینر در داکر:
با زدن دستور docker run در docker cli ما میتوانیم به داکر دیمن درخواست دهیم که یک کانتینر برای ما بسازد اما همانطور که در جلسۀ پیش گفتیم بعد از آن که داکر به سمت یک ساختار microservice رفت؛ موجودات دیگری نیز از داکر دیمن بیرون آمدند و به عنوان یک بخش مستقل شروع به کار کردند. پس بعد از وارد کردن دستور docker run ما درخواست را به سمت داکر دیمن میفرستیم، درخواست به دست containerd میرسد، سپس runc کانتینر مورد نظر ما را میسازد و بعد از پروسۀ ساخت کانتینر shim والد و parent کانتینر ما خواهد بود.
به عنوان مثال:
docker run alpine:latest
این دستور در رجیستری شما به دنبال ایمیج alpine:latest میگردد و اگر آن را پیدا نکرد. سپس یک نمونه طبق همان ترتیبی که بالاتر گفتیم، میسازد و به عنوان کانتینر آن را اجرا میکند و در وضعیت (state) running قرار میگیرد. پس از اجرای کانتینر اگر کانتینر ما بیکار باشد یا به زبانی دیگر اگر کانتینر ما دارای انجام هیچگونه عملیاتی نباشد این کانتینر بلافاصله Down شده و وصعیت آن در حالت stopped قرار خواهد گرفت.
برای مشاهدۀ اینکه آیا یک کانتینر در حال انجام عملیاتی میباشد یا خیر میتوایند از دستور ps aux در کانتینر خود استفاده کنید. از طریق این دستور میتوانید بر تمام فرآیندها و عمملیات در حال اجرا بر روی کانتینر را مشاهده کنید. پس با توجه به دستور گفته شده اگر یک کانتینر دارای هیچگونه PID (Procces ID) نباشد پس میتوان گفت که این کانتینر در آن لحظه بیکار بوده و down خواهد شد.
نحوه نگه داشتن کانتینر در حالت interactive:
اما اگر بخواهیم یک کانتیر بسازیم و آن را interactive نگه داریم باید از سوییچ it- بعد از وارد کردن عبارت docker run و قبل از وارد کردن ایمیجی که میخواهیم از آن یک کانتینر بسازیم استفاده کنیم. این سوییچ به داکر میگوید که این کانتینر را interactive نگهدار و shell را به آن ضمیمه کن تا container خارج نشود.
مثال:
docker run -it alpine
بعد از وارد کردن این دستور شما وارد shell در کانتینر alpine لینوکس خود خواهید شد و اگر دستور ps aux را وارد کنید میتوانید ببینید که در خط اول، PID یکم به کامند bin/sh/ ضمیمه است این دقیقاً همان دلیلی است که کانتینر شما را هنوز در وضعیت running نگه داشته است. برای اثبات این جمله میتوانید کلید ترکیبی ctrl+D را وارد کرده تا از shell خود خارج شوید. اما بلافاصله بعد ای این کار شما خواهید دید که از کانتینر خود بیرون آمدید و کانتینر مورد نظر شما حال در وضعیت stopped قرار گرفت است.
کار با سوییچ detach در هنگام اجرای یک کانتینر:
همچنین با وارد کردن دستور سوییچ d- بعد از عبارت docker run و قبل از نام ایمیجی که میخواهیم از آن یک کانتینر بسازیم؛ میتوانیم این کانتینر را به صورت detach اجرا کنید.
مثال:
docker run -id alpine
این دستور یک کانتینر از ایمیج alpine:latest را میسازد و در حالت detach (بدون آنکه شما وارد خود محیط کانتینر شوید) به صورت interactive اجرا میکند.
مشاهدۀ لیست از کانتینرها:
حال اگر شما در محیط داکر خود دستور docker ps را اجرا کنید میتوانید لیستی از کانتینرهای در حال اجرا را مشاهده کنید. همچنین با وارد کردن دستور docker ps -a لیستی از کل کانتینرهای موجود را میتوانید مشاهده کنید.
نامگذاری کانتینرها:
بعد از وارد کردن دستور شما در آخرین ستون از خروجی قابل مشاهده میتوانید ستون NAMES را مشاهده کنید این یک اسم رندوم است که داکر برای کانتینر شما لحاظ کرده؛ اما شما میتوانید با استفاده از سوییچ name– اسم مورد نظر خود را برای یک کانتینر وارد کنید.
مثال:
docker run -id –name farkiantech-alpine alpine
این دستور یک کانتینر با نام farkiantech-alpine را از ایمیج alpine میسازد؛ سپس آن را در حالت detach و به صورت interactive اجرا خواهد کرد.
امیدوارم که این مقاله برای شما مفید بوده باشه. برای دسترسی به مقالههای قبلی برروی این قسمت <<کلیک>> کنید. همچنین میتوانید از این قسمت برای دسترسی به ویکی داکر استفاده کنید.