سلام و خسته نباشید خدمت شما همراهان عزیز. این هفته هم با یکی از سری مقالات استفاده از داکر در خدمت شما هستم و در این مقاله قرار است تا سری سوالات درباره داکر را با همدیگر بررسی کنیم.
از شما متشکرم که در ۸ هفته گذشته با بنده همراه بودید و در مسیر نگاهی به داکر و استفاده پایهای از این ابزار قدرتمند من را یاری نمودید.
در قسمت های قبلی با دستورات داکر، روش ساخت داکر فایل، ساخت داکر کامپوز فایل و استفاده از داکر کامپوز و چیستی داکر والیوم و استفاده از آن و چیستی داکر سوارم و نحوه نصب این ابزار قدرتمند را با یکدیگر آموختیم و تقریبا مسیر یادگیری داکر به انتهای خود رسیده و آموزش مقوله جدیدی برای معرفی اولیه و در سطح پایه وجود ندارد.
در نظر داشته باشید که این سری مقاله برای کسانی نوشته شده است که تا کنون تجربهای در کارکردن با داکر نداشته و این سلسله مقالات اولین تجربه مواجهه آنها با داکر میباشد؛ به همین دلیل توضیحات اصولا سطحی و در دسترس بوده و گزینههای جانبی زیادی را بررسی نمیکنیم.
در ادامه مقاله سوالات درباره داکر را ابتدا مطرح کرده و سپس در ادامه به پاسخ آنها میپردازیم.
داکر چیست؟
شاید یکی از پایهایترین سوالات درباره داکر این موضوع باشد که اصلا داکر چیست؟
در تعریف کلی داکر یک برنامه کامپیوتری است که به شما دسترسی مجازیسازی در سطح سیستمعامل میدهد و این تغییر را برای شما به عنوان یک کانتینر ایجاد میکند. داکر ابتدا در سال ۲۰۱۳ معرفی شد و به شما کمک میکند تا نرمافزارها و پکیجهایی به اسم کانتینر را اجرا کنید.
در تعریف آسانتر داکر یک ابزار است که طراحی شده تا در بستر کانتینر ها محیطی فراهم آورد تا ساخت و توسعه اپلیکیشنها راحتتر انجام شود.
تفاوت بین مجازیسازی و کانتینرسازی چیست؟
در نظر داشته باشید که در مجازیسازی ما از ماشینهای مجازی استفاده میکنیم که از یک سری نرمافزارها استفاده میکنند که به طور مثال hypervisor ها یکی از آنها هستند؛ ماشینهای مجازی خود به عنوان یک سیستمعامل میتوانند نرمافزارهای متفاوتی بر روی خود داشته باشند و هر کدام میزان مشخصی رم، سیپییو و فضای ذخیرهسازی اشغال میکنند و به خود اختصاص میدهند.
اهمیت این سوال از سری سوالات درباره داکر اینجا مطرح میشود که ماشینهای مجازی کاملا فضای زیرساختی مورد نیاز خود را اشغال میکنند و به هیچ وجه در اختیار سیستم قرار نمیدهند.
اما در طرف دیگر کانتینرها را داریم که بدین صورت ارائه میشوند که بر روی نرمافزاری به نام Container Engine قرار گرفته و به راه اندازی و اجرای اپلیکیشنها میپردازند؛ در این ساختار ما لایهای به نام سیستمعامل وجود نداشته و به جای آن از یک سری والیوم در فضای ذخیره سازی که با تنظیمات داکر ایمیج ساخته شدهاند مواجه میشویم.
در نظر داشته باشید که کانتینرها سختافزار بسیار کمتری نسبت به ماشینهای مجازی استفاده میکنند چون هسته آنها در زمان ساخت برای اجرای اپلیکیشن مورد نیاز شما بهینه میشود و در زمان اجرا منابع سرور شما (رم، هارد، سیپییو) را به خود اختصاص نداده و تنها از آن به اندازه نیاز خود استفاده میکنند.
مزیت استفاده از داکر چیست؟
سوال پر اهمیت دیگری که در سری سوالات درباره داکر مطرح میشود آن است که مزیت استفاده از داکر چیست؟ اصلا چرا از داکر استفاده میکنیم؟
در جواب این سوال باید گفت:
یک اپلیکیشن در داخل یک کانتینر میتواند بر روی هر سیستمی اجرا شود و به سیستمعامل یا هیچ فاکتوری از هاست ارتباطی ندارد، تنها نیاز است که داکر بر روی آن سیستمعامل نصب باشد پس فرآیند نصب و راهاندازی تعدادی زیادی از نرمافزارها از و زمانی که برای این کار میگذاریم کمتر میشود.
مزیت دیگر استفاده از داکر آن است که به دلیل تست و ارائه نرمافزار در داخل یک کانتینر ما نگرانیای درباره کار کردن یا نکردن این نرمافزار نخواهیم داشت، میتوانیم داکر را در هر زمان به هر جا و هر تعدادی که نیاز است انتقال داده و استفاده نماییم و محیط تستش تست کرده و به قسمت محصول برسانیم.
مزیت دیگر آن است که داکر کانتینر اصولا بر روی تمام پلتفرم ها در دسترس بوده و قابل نصب است به همین دلیل محدودیتی بر روی اجرا کانتینرها در هیچ جا وجود ندارد.
در ورژن کنترلرها مانند گیت هم داکرها دست بالاتر را دارند چون به سادگی میتوان از آنها برای استفاده در ورژن کنترلرها استفاده کرد و توسعه اپلیکیشن و مدیریت کسب و کار را راحتتر انجام داد.
چرا به جای ران کردن چند داکر از داکر کامپوز استفاده میکنیم؟
سوالات درباره داکر به دو دسته تقسیم میشوند: چگونگی استفاده از داکر، چرایی استفاده از داکر.
در مورد دوم این تقسیمبندی راحتی کار با داکر کانتینر به چشم میخورد و توسعه پذیری این ابزار هم اهمیت خود را نشان میدهد.
اما در نظر داشته باشید موردی که به آن بر میخوریم آن است که چند سرویس با هم کار کنند و نیاز به شبکه اختصاصی یا الویت ساخت و توسعه داشته باشید از طرفی کار کردن آنها به یکدیگر وابسته باشند.
در این ساختمان اپلیکیشنهای مجزا DataBase, FileSystem, WebServer, Frontend را در اختیار داریم که در ساختمان کلی باید ۴ داکر با همین اسامی و ارتباط های مشخص در تصویر داشته باشیم که هر کدام متغییرهای محلی خود را داشته باشید و همچنین والیومهای مورد استفاده آنها در خیلی از سرویسها مورد بحث بوده و امکان دارد با یکدیگر در ارتباط یا مشترک باشد.
در لایه شبکه هم این چند اپلیکیشن برای سرویسدهی به مشتری نیاز است تا با یکدیگر در ارتباط باشند.
در صورتی که سرویس ما نیاز به انتقال یا گسترش داشته باشد نیز باید یک یا چند ساختمان شبیه همین تصویر به مرحله ساخت برسد که در صورت اشتباه احتمالا ساختمان اصلا کار نکند.
برای همین داکر یک پلتفرم به اسم docker-compose داکر کامپوز ارائه داده که میتوانیم تمام تنظیمات ارتباطی و حافظهای تمام این سرویسها را در قالب یک فایل استاندارد yml ساخته و به داکر کامپوز معرفی کنیم تا تنها با یک دستور تمام سرویس ساخته شود یا هر کدام از اجزا و اپلیکیشنها با استفاده از گزینه scale به اندازه مورد نیاز ما گسترش پیدا کرده و سریعتر و در دسترس تر کار کنند.
تنظیمات HA این سرویسها هم بر عهده خود داکر بوده و پخش لود در این مقوله کاملا هوشمند و از طرف شبکه داخلی داکر انجام میشود.
بسیار متشکرم که در این سری مقالات استفاده از داکر با من در این مسیر قدم برداشتید و این قسمت تحت عنوان سوالات درباره داکر آخرین زنجیره از این مقالات بوده و در هفتههای بعد با سری مقالات آموزش انسیبل در خدمت شما خواهم بود. امیدوارم این سری مقالات تجربه خوبی از داکر در اختیار شما گذاشته باشد و تا حدودی بتوانیم بعد از مطالعه این مقالات درکی از داکر داشته باشیم و از این تکنولوژی به روز و سریع در ساخت و ارائه سرویسهای خود استفاده کنیم.
میتوانید نظرات و پیشنهادات خود را برای ادامه این مقاله و همچنین مقالههای دیگر در کامنتها یا ایمیل s.m.javadi001@gmail.com با بنده در میان بگذارید.
با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشتند؛ ابرآراز ارائه دهند سرویسهای تماما ابری بوده که در زمینه رایانش ابری فعالیت دارد، میتوانید برای استفاده و تجربه این سرویس به سایت:
مراجعه فرمایید.