آموزش Docker یکی از ضرورتهای ورود به دنیای برنامه نویسی در بازار امروز محسوب میشود. این پلتفرم در ابتدا برای سیستمعاملهای خانواده لینوکس راهاندازی شده بود. اما با گذشت زمان و استقبال بالای کارشناسان IT نسخه ویندوز و MAC OS نیز برای این نرمافزار عرضه شد. اگر با تکنولوژی کانتینر آشنا باشید استفاده از داکر «Docker» برایتان بسیار آسان خواهد بود. اما اگر نمیدانید Container چیست جای نگرانی نیست. در دوره آموزش داکر رایگان تمام هر آنچه برای کار با این پلتفرم نیاز دارید پوشش داده شده است.
آموزش جامع داکر یکی از موضوعاتی است که در شبکه اجتماعی Youtube توسط کانالهای آموزشی زیادی مورد توجه قرار گرفته است؛ بنابراین پیدا کردن یک آموزش ماسب Docker قطعاً کار سختی برای شما نخواهد بود. اما آیا بهتر نیست قبل از شروع یادگیری داکر اطلاعات بیشتری در مورد آن کسب کنیم؟ چرا که نه. پس اگر شما هم در این مورد با ما هم عقیده هستید بیایید کمی بیشتر با این تکنولوژی آشنا شویم.
داکر پلتفرمی است که به کاربر امکان توسعه نرمافزار مبتنی بر کانتینر را میدهد. کانتینر به قطعه نرمافزاری گفته میشود که تمام ملزومات اجرای یک برنامه را بستهبندی میکند. این پکیج که به نوعی یک نگهداره به شمار میآید، محیطی ایزوله شده مشابه ماشین مجازی هست. در نتیجه هر وقت بخواهیم اپلیکیشن موجود در یک کانتینر را اجرا کنیم از Docker کمک میگیریم. اما وقتی میتوانیم از یک ماشین مجازی منفرد برای اجرای نرمافزار خود استفاده کنیم چه نیازی به Container داریم؟ برای پاسخ به این سؤال باید یک سناریو واقعی تعریف کنیم.
فرض کنید ۴ اپلیکیشن داریم که همه آنها به زبان پایتون توسعه داده شدهاند و ورژن پایتون مورد استفاده در هر برنامه با بقیه متفاوت است. اگر بخواهیم این اپلیکیشنها را داخل سیستمهای متفاوتی اجرا کنیم مشکلی نداریم. مشکل زمانی به وجود میآید که بخواهیم همه نرمافزارهای مورد بحث را در یک سیستم اجرا شود؛ چرا که نمیتوان روی یک ماشین چند نسخه از پایتون را نصب کنیم. پس راه حل چیست؟ برای نصب ۴ نسخه از پایتون روی یک ماشین چه راهی وجود دارد.
یکی از روشهایی که در سالهای گذشته زیاد استفاده میشد راهاندازی ماشین مجازی است. یک ماشین مجازی مکانیزمی در اختیار کاربر قرار میدهد که بتواند چندین سیستم عامل را روی یک ماشین فیزیکی «کامپیوتر یا سرور» نصب کند. با این کار مسئله اجرای هر ۴ اپلیکیشن روی یک سیستم حل میشود. با این وجود آیا میتوان نتیجه گرفت آموزش داکر لزومی ندارد؟ قطعاً خیر. استفاده از ماشین مجازی ایراداتی هم دارد. در واقع همین معایب کارشناسان را به سمت ساخت پلتفرمهایی مانند داکر و کانتینر سوق داده است.
اولین عیب کار با ماشین مجازی استفاده بیش از حد از فضای ذخیرهسازی هست. همانطور که میدانید حجم قابل توجهی از درایوی که به سیستمعامل اختصاص میدهیم، همان لحظه اول پس از نصب سیستمعامل اشغال میشود. بعد از نصب نرمافزارهای ضروری حجم مصرفی از هارد مجدد بیشتر میشود. حال تصور کنید بخواهیم ۴ سیستمعامل را همراه ملزومات هر کدام روی یک ماشین نصب کنیم.
مشکل دیگری که این روش دارد عدم امکان برقراری ارتباط میان چند ماشین مجازی است. اگر چنین امکانی وجود داشت میتوانستیم برخی از نرمافزارها که داخل چند Virtual Machine در یک نسخه استفاده میشوند را میان آنها به اشتراک بگذاریم. با وجود چنین قابلیتی در استفاده از هارد صرفهجویی بیشتری ممکن میشد.
مسئله سوم که اهمیت بیشتری هم دارد استفاده میزان بیشتری از منابع سختافزاری توسط ماشین مجازی است. به عنوان مثال اگر سیستم شما دارای ۸ گیگابایت رم باشد هر ماشین مجازی مقداری از آن را برای خود جدا کرده و استفاده میکند؛ بنابراین اگر بخواهیم چند فضای مجازی به صورت همزمان داشته باشیم باید ماشین فیزیکی قدرتمندتر و گرانتری تهیه کنیم.
کانتینرها این مشکلات را به طور کامل برطرف میکنند. با کمک این تکنولوژی دیگر نیازی به فضای ذخیرهسازی زیاد نداریم. از نظر ارتباط کانتینرها با یکدیگر نیز امکان اشتراک گذاری منابع نرمافزاری میان آنها فراهم شده است. استفاده از منابع سختافزاری کمتر مزیت دیگر کانتینرها به شمار میرود.
یک کانتینر برای ایجاد فضای مجازی نیازی به نصب سیستمعاملهای متعدد ندارد. این فناوری تنها با همراه داشتن Kenel سیستمعامل مورد نظر شبیهسازی خود از آن را انجام میدهد. پس اگر آموزش داکر پیشرفته را گذرانده باشید تا حد زیادی از نظر سرعت اجرای برنامهها و منابع سختافزاری مورد استفاده و هزینهها بهینه عمل خواهید کرد.
داکر برای اینکه بتواند به کانتینر بفهماند که هنگام اجرای اپلیکیشن باید چه کامپوننتهایی را اجرا کند نیاز به یک سری دستورالعمل دارد. این دستورالعملها توسط یک فایل قابل حمل به نام Image در اختیار کانتینر قرار میگیرد. برای ساخت فایل Image نیز باید از دستورالعملهای ویژهای استفاده شود. این دستورالعملها داخل Dockerfile قرار دارند.
همانطور که گفتیم اولین سیستمعاملی که از داکر پشتیبانی میکرد لینوکس بود. اما ویندوز هم کاربران زیادی در سطح جهاد دارد؛ بنابراین نسخه قابل اجرا در ویندوز نیز ساخته شد. از این رو اگر کاربر مایکروسافت ویندوز هستید، در صورت عدم تمایل، اجباری بر انتقال به لینوکس نیست. اما این موضوع را هم در نظر داشته باشید که اغلب کاربران حرفهای داکر علاقهای به استفاده از نسخه ویندوز این پلتفرم ندارند. زیرا از نظر آنها سرعت اجرای داکر در ویندوز پایین است. با این حال مطمئناً این مسئله به زودی برطرف خواهد شد.
تا این قسمت از آموز Docker سعی کردیم با کاربرد داکر و خصوصیات کانتینر آشنا شویم. در ادامه قصد داریم مفهومی پیشرفتهتر را بررسی کنیم. گاهی اوقات اپلیکیشنهایی توسعه داده میشوند که دارای چند کانتینر هستند. به این معنی که یک اپلیکیشن داریم که از چند اپلیکیشن کوچکتر برای انجام عملیاتی بخصوص استفاده میکند. برای اجرای چنین برنامهای نیاز به ابزاری متفاوتتر داریم. نام این ابزار Docker compose است.
تمامی موضوعات مهم در مورد آموزش داکر را مطرح کردیم؛ بنابراین حتماً متوجه شدهاید که داکر یک محیط متمرکز ارائه میدهد. در نتیجه نباید انتظار Scale پذیری بالایی از این پلتفرم داشته باشیم. به همین دلیل کمپانیهای بزرگی که با دادههای غیرمتمرکز و بسیار بزرگ سروکار دارند نمیتوانند روی چنین تکنولوژی سرمایه گذاری کنند.
بیایید برای درک بهتر مسئله این موضوع را به زبان سادهتری بیان کنیم. داکر تنها یک ماشین فیزیکی را میان چند اپلیکیشن به اشتراک میگذارد. این فناوری بهترین و بهینهترین حالت را برای یک سیستم واحد ارائه میدهد. اما اگر بخواهیم ۴ اپلیکیشن مثالمان به وسیله ۱۰ سیستم سختافزاری در محلهای مختلف و با توانهای متفاوت را با کمک کانتینرها به شکلی توزیع شده اجرا کنیم چه میشود؟
آیا داکر پاسخگوی سیستمهای توزیع شده هست؟ خیر. داکر تنها به شکل متمرکز قابل استفاده خواهد بود؛ بنابراین نیاز به تکنولوژی قویتری برای این کار داریم. نام این تکنولوژی قدرتمند Kubernetes است. این پلتفرم چندین سال توسط گوگل تحت عنوان Borg به کار گرفته میشد. پس از آزمون و خطاهایی که روی نرمافزار بورگ انجام شد کمپانی گوگل در سال ۲۰۱۴ پلتفرم قدرتمند خود را با نام کوبرنتیز معرفی و به صورت متن باز عرضه کرد.
در سالهای اخیر مکتب خونه فعالیتهای خود را در حوزه آموزش موضوعات روز IT افزایش داده است. از آنجایی که مفاهیم و علوم توسعه نرمافزار و تکنولوژیهای مورد استفاده به سرعت در حال رشد و تغییر هستند، نیاز به فعالیتی چندجانبه داشتیم؛ بنابراین آموزش داکر و کوبرنیتز را در دستور کار خود قرار دادیم. در نتیجه این برنامهریزی دورههایی فوقالعاده و مناسب بازار کار تهیه و منتشر شدند. خوشحال خواهیم شد با تهیه و استفاده از این محصولات انگیزه ما را در ادامه مسیر افزایش دهید.