داکر چیست؟ Docker یک پلتفرم متن باز است که از آن در فرایند ساده سازی ساخت، پیاده کردن و اجرای برنامهها بهره گیری میشود. این فرایند با استفاده از کانتینرها صورت میگیرد. در ابتدا برای آشنایی بیشتر با مفهوم Docker لازم است که مفهوم کانتینر را بدانید. پس از آن به توضیح، معایب و مزایا داکر و البته استفاده از آن خواهیم پرداخت. در این مقاله از پایگاه دانش سرور پارس با ما همراه باشید.
داکر Docker، در واقع نوعی ماشین مجازی است و این امکان را برای برنامه ها فراهم میکند تا از یک Kernel واحد لینوکس استفاده کرده و از امکاناتی بهره مند شوند که در سیستم عامل میزبان ارائه نشده است. به این ترتیب میتوانند به صورت مستقل از پیش نیازها و امکانات مازاد بهره برداری کنند.
این موضوع باعث میشود سرعت و عملکرد برنامه بهبود قابل ملاحظهای پیدا کند و حجم آن نیز کاهش یابد. اما برای آشنایی بیشتر با این مفهوم جدید، اجازه دهید تا ابتدا شما را با کانتینر آشنا کنیم.
کانتینر چیست؟
برای این که بتوان برنامه های مختلف را در یک محیط ایزوله و به صورت مستقل قرار داد به صورتی که برای توسعه یک نرم افزار، هر یکی از این برنامه ها به صورت مستقل کار کرده و فعالیت آن ها بر روی یکدیگر تاثیری نداشته باشد، باید از یک ماشین مجازی استفاده کرد.
ماشین مجازی در واقع برنامه ها را به صورت مستقل اما بر روی یک سخت افزار نگهداری می کند. در این حالت component ها با هم تداخل نداشته و رقابت برای استفاده از منابع سخت افزاری به حداقل میرسد.
اما در تعریف کانتینر باید اشاره کنیم که درست در مقابل ماشین مجازی قرار می گیرد. کانتینتر ها در واقع جایگزین مناسبی برای ماشین های مجازی هستند. کانتینر هسته سیستم عامل را به اشتراک گذاشته و محیط های اجرایی را جدا می کنند. همچنین قابل ذکر است که نسبت به ماشین های مجازی از منابع کمتری استفاده کرده و خیلی سریع قابلیت اجرا پیدا می کنند.
به عبارت دیگر باید اشاره کنیم که کانتینر (Container) به عنوان یک واحد استاندارد از یک برنامه قلمداد میشود. این واحد استاندارد همه کدها، کامپوننت ها، کتابخانهها و هر متعلقاتی که مرتبط با آن هاست برای اجرای فوری و آسان در فضاها و محیط های دیگر آماده میکند.
کانتینرها سبب میشوند که برنامهها ایزوله شوند. با این کار دیگر لازم نیست برای هر برنامه از یک سیستم عامل مجزا استفاده کرد. در حقیقت قادر هستند که از یک سیستم عامل به صورت اشتراکی استفاده کنند.
داکر چیست؟
اما داکر چیست؟ بعد از این که به صورت خلاصه و مفید با مفهوم کانتینر آشنا شدید، وقت آن است که به صورت تخصصی با مفهوم داکر آشنا شوید. در یک پاسخ کلی، داکر یک ابزار است که برای ساده سازی در ساخت و اجرای برنامهها کاربرد دارد.
این عملیات به وسیله کانتینرها انجام میشود. استفاده از کانتینرها این امکان را برای ما فراهم میسازد تا همه برنامهها و کامپوننت های آنها را به صورت یک بسته مرتب کرده و در هر ماشینی آن را اجرا کنیم.
بدون اینکه به تنظیماتی نیاز داشته باشد. با استفاده از داکر میتوانید تغییر در سرعت را به خوبی احساس کنید. به طوری که تأخیر زمان میان نوشتن برنامه تا اجرای آن به طور چشمگیری کاهش مییابد.
از جهاتی داکر Docker را میتوان مانند یک ماشین مجازی دانست. در واقع فرق آن با ماشین مجازی در این است که ماشین مجازی یک سیستم عامل جدید را میسازد و اجرا میکند. در حالی که در داکر، برنامهها میتوانند از هسته لینوکسی که در آن اجرا میشوند استفاده کنند. همچنین تنها به مواردی که در رایانه اجرا نمیشوند و برنامهها به آنها نیاز دارند توجه میکنند
. وجود این ویژگی باعث شده که بهبود ویژهای در کارایی صورت گیرد. همچنین سبب شده که حجم برنامهها با کاهش چشمگیری همراه باشد. با توجه به اینکه هیچ یک از کانتینرها وابستگی خاصی به پلتفرم ها ندارند، داکر Docker توانایی اجرا هم در سیستم عامل ویندوز و هم در لینوکس را دارد. همچنین در مواقعی که نیاز باشد، توانایی اجرا در ماشینهای مجازی را دارد. در واقع هدف اصلی، اجرای برنامههای Micro Service در معماری داکر است.
معماری Docker
مدلی که معماری داکر از آن استفاده میکند مدل کلاینت سرور است. این مدل شامل اجزای مختلفی میشود که در ادامه به بررسی هر یک از آنها میپردازیم.
کلاینت داکر
برقراری ارتباط با داکر با استفاده از کلاینت داکر انجام میشود. در حقیقت کاربران به همین شکل از داکر استفاده میکنند. کلاینت دستورات صادر شده را به وسیله Docker API به Dockerd ارسال میکند. جالب است بدانید که هر کلاینت قادر است با چند Daemon ارتباط داشته باشد.
موتور داکر (میزبان)
موتور Docker یا Docker Engine به عنوان اصلی ترین قسمت سیستم تلقی می شود. این موتور در واقع یک برنامه است که بر پایه Client Server بر روی ماشین میزبان نصب و اجرا می شود. موتور داکر از سه قسمت تشکیل شده است:
- Daemon: این سرویس به عنوان سرویس پشت صحنهای کار خود را انجام میدهد چرا که همواره در پشت صحنه در حال اجراست و نام آن Dockerd است. وظیفه این قسمت ایجاد و مدیریت عکسهای داکر، کانتینرها، شبکهها و همچنین فضای حافظه است. البته به درخواستهای API نیز جواب میدهد.
- Rest API: وظیفه این بخش تعامل با سرور Docker است. این تعامل توسط برنامهها صورت میگیرد.
- Command Line Interface یا CLI: وظیفه این کلاینت وارد نمودن دستورات داکر است.
رجیستری های داکر
مکانی به نام رجیستری محل ذخیره تصاویر داکر است. یکی از رجیستریهای عمومی Docker Hub نام دارد که به شما قابلیت ذخیره سازی تصاویرتان را ارائه میدهد. به صورت پیش فرض، Docker عکسها را در داکر هاب میخواند و ذخیره میکند.
کاربر میتواند برای خودش یک رجیستری به صورت خصوصی بسازد و از آن استفاده نماید. همچنین در صورت استفاده از دستورات Pull و یا Run میتوان تصاویر را از رجیستری خواند و با دستور Push میتوان عکسها را در رجیستری ذخیره نمود.
اشیای داکر یا (Docker Objects)
استفاده از داکر شامل استفاده از اشیایی همچون عکسها، کانتینرها، حافظهها و شبکههاست. در ادامه هر مورد توضیح داده میشود:
تصاویر: قالب عکسهایی که دارای دستورات ساخت کانتینرها هستند صرفاً خواندنی میباشد. شما میتوانید عکسها را به همان شکلی که هستند از داکرهاب استخراج و استفاده نمایید.
همچنین میتوانید بر روی آنها تغییراتی اعمال نمایید و image جدیدی ایجاد نمایید. همچنین میتوانید به وسیله Docker File دستورات ایجاد و اجرای کانتینرها را به عنوان یک Image جدید ایجاد کنید و به استفاده از آن بپردازید.
عکسها دارای دو لایه هستند. یک لایه صرفاً خواندنی و یک لایه دیگر که میتوان در آن به نوشتن پرداخت. در حقیقت وقتی که شما در عکسها تغییراتی را به عمل میآورید تنها قسمتهایی که در لایه نوشتنی تغییر یافتهاند ذخیره میشوند.
کانتینرها: پس از اجرای یک image، کانتینری ساخته میشود همه برنامههای مرتبط با آن در داخل این کانتینر به اجرا در میآیند. فعال یا غیر فعال نمودن کانتینرها توسط Docker API و همچنین CLI انجام میشود.
حافظهها: حافظهها محل ذخیره برای همه دادههای تولید شده به وسیله Docker و همچنین دادههای مورد استفاده کانتینرها هستند. مدیریت این حافظهها به وسیله Docker API و CLI صورت میگیرد. سازگاری این حافظهها هم با کانتینرهای ویندوزی و هم با کانتینرهای لینوکسی مورد تأیید است. ذخیره سازی دادهها در حافظهها به مراتب بهتر از ذخیره در لایه نوشتنی کانتینرهاست.
همچنین دادههای ذخیره شده در حافظه ها از عمر بیشتری نسبت به دادههای ذخیره شده در کانتینرها برخوردار هستند. توجه به این نکته مهم است که ذخیره نمودن روی حافظه سبب بیشتر شدن حجم و سایز کانتینرها نمیشود.
شبکهها: کانتینرهای جدا از هم به وسیله شبکهها با یکدیگر ارتباط برقرار میکنند. در داکر ۵ نوع درایور شبکه موجود است که نامهای آنها به این قرار است: None که همه شبکهها را قطع میکند. درایور Bridge که در زمانهایی که برنامهها بر روی کانتینر مستقل اجرا میشوند مورد استفاده قرار میگیرد. درایور Host که سبب جدا سازی میان کانتینرها و میزبان میشود.
درایور Overlay سبب فعال سازی سرویسهای Swarm میشود. در حقیقت زمانی مورد استفاده قرار میگیرد که کانتینرها بر روی میزبانهای مختلف ذخیره شده باشند. درایور Mac Vlan به کانتینرها آدرس مک مخصوصی اختصاص میدهد تا باعث شبیه سازی آنها به دستگاههای فیزیکی شود.
تفاوت داکر و ماشین مجازی
آیا داکر و ماشین مجازی با یکدیگر تفاوت دارند؟ این سوالی است که ممکن است برای شما نیز پیش آمده باشد. برای پاسخ به این سؤال باید آن دو را از جنبههای گوناگون مورد بررسی قرار داد:
۱- پشتیبانی از سیستم عامل ها
جالب است بدانید که ماشینهای مجازی علاوه بر سیستم عامل میزبان، خودشان نیز دارای یک سیستم عامل مجزا هستند. در واقع علت سنگین شدن و مصرف بیش از حد از منابع نیز همین است.
در داکر وضعیت استفاده از سیستم عامل فرق میکند. در واقع داکر در کانتینرها از سیستم عامل میزبان به صورت اشتراکی استفاده میکنند. همین امر سبب میشود از منابع استفاده سبکتر و مصرف کمتری شود.
ماشین مجازی در مقایسه با داکر از سرعت لود کردن و پردازش کمتری بهره میبرد. مناسب بود استفاده از داکر زمانی است که اجرای چندین برنامه صرفاً روی یک سیستم عامل باشد. در صورت نیاز به استفاده از چندین سیستم عامل باید از ماشینهای مجازی استفاده شود.
۲- امنیت
داکر از امنیت بسیار کمتری نسبت به ماشین مجازی برخوردار است. ایمنی پایین داکر به دلیل آن است که چند برنامه از یک سیستم عامل مشترک استفاده میکنند. در ماشین مجازی به دلیل اینکه برنامهها از سیستم عاملهای جدایی استفاده میکنند از امنیت و ایمنی بیشتری برخوردار هستند.
اگر کسی بخواهد به هک کردن این برنامهها بپردازد به راحتی میتواند از ایمنی داکر ها عبور کند ولی اگر بخواهد به برنامههای موجود در ماشین مجازی حمله کند نمیتواند به منابع دیگر ماشینها دسترسی داشته باشد.
۳- قابلیت جابجایی
داکر ها را به راحتی میتوان جابجا کرد چرا که از سیستمعامل جداگانهای برخوردار نیستند و به راحتی میتوان آنها روی هر سیستم عاملی نصب و اجرا کرد. ماشین های مجازی چون از سیستم عاملهای جداگانه ای بهره میبرند به سختی میتوان آنها را جابجا کرد.
همچنین جابجایی آنها زمان زیادی را صرف میکند. در زمانهایی که میخواهید یک برنامه ساخته شده را بر روی چندین پلتفرم امتحان کنید داکر میتواند گزینه بسیار مناسبی باشد.
۴- کارایی
مقایسه داکر با ماشین مجازی به هیچ عنوان کار عادلانهای نیست چرا که کاربردهای آن دو با یکدیگر تفاوتهای زیادی دارد. اما به دلیل معماری و مصرف کم از منابع میتوان داکر را به عنوان یک گزینه بهتر و مناسبتر به شمار آورد.
از نظر زمان شروع به کار، داکر نیز سریعتر از ماشین مجازی عمل میکند و البته این نکته را هم باید در نظر داشت که کانتینرهای داکر احتیاجی به نصب سیستم عامل جداگانه ندارند.
مقایسه داکر و ماشین مجازی
- ایزوله سازی فرآیندها در داکر در سطح سیستم عامل است ولی در ماشین مجازی به صورت سخت افزاری به کار گرفته میشود.
- کانتینرها میتوانند از سیستم عامل اشتراکی هم استفاده کنند ولی ماشینهای مجازی صرفاً از سیستم عامل مخصوص به خود میتوانند استفاده کنند.
- سرعت بوت شدن در ماشین مجازی به مراتب بالاتر از داکر است.
- میزان مصرف منابع در ماشین مجازی بیشتر از داکر است.
- برای ساخت ماشین مجازی زمان بیشتری نسبت به ساخت کانتینر داکر صرف میشود.
موارد استفاده از داکر
در چه مواقعی باید از داکر استفاده شود و در کجا نباید از آن استفاده شود؟ این سوالی است که ممکن است برایتان پیش آمده باشد. به طور کلی اگر برنامه شما به عنوان زیر شاخه موارد زیر قرار گیرد پیشنهاد میشود که از داکر استفاده شود.
۱- یادگیری تکنولوژی های جدید: داکر دارای محیطی ایزوله و بسیار مناسب برای شروع کار با ابزار جدید است که بدون اینکه زمان زیادی صرف شود به راحتی میتوان آن را تنظیم نمود.
۲- موارد استفاده ساده: در صورتیکه برنامه شما ساده و یا استاندارد باشد میتوانید تعداد زیادی از برنامههای خود را از داکر هاب به راحتی استخراج و استفاده نمایید.
۳- ایزوله کردن برنامه: در صورتی که بخواهید چند برنامه را با هم اجرا کنید میتوانید به وسیله Docker کامپوننت های هر برنامه را در کانتینرهای مختلف به صورت جداگانه نگهداری کنید و میتوانید از مشکلات مدیریت وابستگی دادهها جلوگیری کنید.
۴- گروههای توسعه دهنده: در صورتی که شما دارای چند توسعه دهنده باشید که با تنظیمات گوناگون کار میکنند میتوانید به وسیله داکر محیط محلی مشابه با محیط محصول را فراهم کنید تا هر کدام روی آن کار کنند.
برای اینکه بدانید استفاده یا عدم استفاده از داکر برای شما مناسب است یا خیر باید موضوع و حیطه کاری شما معلوم باشد تا بتوانید درست تصمیم گیری کنید. چرا که در صورتی که در موقعیتی نامناسب از داکر استفاده شود نه تنها کارتان سخت و پیچیده میشود بلکه همه نیازهای شما را نمیتواند برطرف کند.
آموزش نصب داکر در ویندوز
برای شروع نصب داکر در ویندوز باید ابتدا نسخه Docker Desktop را دانلود کنید. برای این کار باید در وب سایت اصلی داکر، یک حساب کاربری ایجاد کنید. با ایجاد حساب کاربری می توانید نسخه ویندوز داکر را دانلود و نصب کنید. دقت کنید که بعد از نصب، لازم است تا سیستم خود را یکبار مجدد راه اندازی کنید. بعد از راه اندازی مجدد سیستم، داکر به صورت خودکار راه اندازی می شود.
ممکن است با خطایی مبتنی بر نیاز به نصب کرنل لینوکس در ویندوز مشاهده کنید. در این حالت باید «Linux kernel update package» را دانلود و نصب کنید. سپس در پنجره خطا، روی گزینه Continue کلیک کنید. پس از آن، Docker Engine در برنامه Docker Desktop به صورت خودکار بارگذاری میشود. پیشنهاد می شود برای آموزش داکر و نحوه کار با آن، به دوره های تخصصی در این رابطه، مراجعه کنید.
سخن آخر
البته آشنایی با مفهوم داکر، شناخته کاربردهای و مزیت های آن نیازمند صرف زمانی بیشتر است. اما با این حال ما سعی کردیم در این مطلب کمی خلاصه و مفید در خصوص چیستی Docker ، مقایسه آن با ماشین مجازی و تفاوت های آن صحبت کنیم. اگر شما تحربه و تخصصی در این زمینه دارید، خوشحال می شویم که در بخش دیدگاه ها در خصوص آن صحبت کنید. از این که تا پایان این مطلب با ما همراه بودید، از شما سپاس گزاریم.
در پایان بد نیست بدانید که سرورپارس به عنوان قدیمی ترین و بهترین شرکت های ارائه دهنده خدمات هاستینگ و میزبانی وب، اعم از هاست، سرور، دامنه و سایر سرویس ها در خدمت شما عزیزان است. برای خرید محصولات و یا استعلام قیمت ها با کارشناسان فروش ما در تماس باشید.
مطالب مرتبط:
دیدگاهتان را بنویسید