داکر Docker چیست
مفهوم داکر و کانتینر
قبلا سرویسها و اپلیکیشنها به دلیل Monolithic بودن روی یک سرور قرار میگرفتند، ولی در دیدگاه جدید و با استفاده از مفهومی به نام Runtime که در داکر مطرح میشود برنامه ها و اپلیکیشنهای مختلف را میتوان در کانتینرهای مختلف از هم ایزوله کرد تا روی یک سیستم عامل کنار هم بدون تداخل بالا بیایند. کانتینر برنامه ها با تمام نیازمندیهای خود مثل فایلهای DLL توابع تنظیمات رجیستری و ... را درون خود دارد. داکر یک پراسس است که اجرا میشود و منابع پردازشی لازم Runtimeرا برای اجرای کانتینرها در اختیار او قرار میدهد و زمانی که کانتینر terminate شود این پراسس از بین میرود. کانتینرها سبک هستند، OS ندارند، به راحتی Deploy میشو و بین زیرساختهای مختلف به راحتی جابه جا میشوند.
داکر یا Docker ابزاری ست اوپن سورس که برای ایجاد، توسعه و اجرای برنامه های کاربردی توسط کانتینرها (Container) بکار میروند. کانتینرها شبیه sandbox عمل میکنند. با این تعریف شاید سوال برایتان پیش بیاید حال کانتینر چیست و چه کاربردی دارد ؟ کانتینر (Container) این اجازه را به برنامه نویسان و توسعه دهندگان Application ها میدهد تا یک برنامه را با تمام ماژول ها و کامپوننتهای وابسته آن ( مانند کتابخانه ها ، توابع و ... ) یکی کرده و بصورت یک پکیج درآورده تا آن برنامه تولید شده در پلتفرمها و سیستمهای مختلف بدون مشکل اجرا شود. در حقیقت بدون نگرانی از تنظیمات و وابستگیهای یک application خاص در پلتفرمهای دیگر، آن برنامه در هر محیطی اجرا شود. داکر که در بالا به آن اشاره شد وظیفه مدیریت کانتینرها را به عهده دارد و بیشتر شبیه یک ماشین مجازی در بستر مجازی سازی عمل میکند
تفاوت کانتینر و مجازی سازی سرور
در vm یا ماشین مجازی برای اجرای اپلیکیشن و برنامه های مختلف که بخواهیم بصورت ایزوله از هم کار کنند باید vm های مختلف ساخته شود که همین موضوع بارپردازشی و هدررفت منابع سیستمی را روی سرور به همراه دارد. ولی در Docker روی یک vm خاص که میتواند ویندوز 2016 باشد یا لینوکس، ما ماژول داکر را نصب میکنیم و سپس روی سرویس داکر، کانتینرهای مختلف حاوی برنامه ها و اپلیکیشن های مختلف نصب و اجرا میشوند بدون اینکه کانتینرها به هم دسترسی داشته باشند. در حقیقت کانتینرها از هم ایزوله هستند و نیاز ما برای ایجاد چندین vm را مرتفع میسازند. به این نوع تکنولوژی داکر، مجازی سازی در سطح سیستم عامل یا operating-system virtualization گفته میشود. در مجازی سازی ایراداتی مانند موارد زیر وجود دارد:
در شکل زیر این موضوع به تصویر کشیده شده است :
همان طور که در تصویر مشخص میباشد در ماشین مجازی یا vm ما به ازای هر application که نیاز به محیط isolated دارد یک vm جدا میسازیم ولی در کانتینر، application های مختلف روی یک سرور یا یک ماشین مجازی در قالب پکیج های مختلف در حال اجرا میباشند و از منابع سیستم عامل میزبان یا Guest OS بصورت اشتراکی استفاده میکنند. با توجه به اینکه کانتینرها در user space های جدا در حال اجرا میباشند در صورت ایجاد مشکل در یک کانتینر ، برای سایر کانتینرها یا کرنل ماشین مجازی مشکلی پیش نمی آید. ذکر این نکته مهم میباشد که برای کار با داکر تسلط به مفهیم سیستم عامل لینوکس اهمیت زیادی دارد و بایستی با لینوکس و کامندهای آن آشنا بود.
بخشهای مختلف داکر
- داکر هاست یا Docker Host سرور و سیستمی که داکر روی آن نصب و راه اندازی میشود را هاست داکر میگویند که هم میتواند سرور فیزیکی باشد و هم ماشین مجازی
- داکر انجین یا Docker Engine : با نصب docker engine که کرنل و هسته مرکزی داکر به حساب می آید مدیریت کانتینرها ممکن میگردد. ران تایم زیرساخت موردنظر را برای بررسی اجرای اپلیکیشن در کانتینر در اختیار ما میگذارد، مثل Docker
- خط فرمان داکر یا Docker CLI : یک رابط خط فرمان یا cli در اختیار ما قرار میدهد تا بتوانیم به داکر متصل شده و بصورت command و خط فرمان داکر را مدیریت کنیم.
- الگوها یا Image ها : image ها در ساختار داکر شبیه template ها در ساختار مجازی سازی میباشد که از روی آن میتوان کانیتینر یا چندین کانتینر را deploy یا ایجاد نماییم. image ها در حقیقت یک فایل چند لایه ای بوده که مجموعه ای از کدها و توابع و دستورالعمل ها بوده که داخل کانتینر اجرا میشود. کانتینرها از روی image ایجاد میشوند که یا توسط ادمین ایجاد شده اند و یا از قبل ایجاد شده و قابل استفاده هستند.
- کانتینر یا Container : کانتینر همان طور که در بالا به آن اشاره شد واحد اجرایی تولید شده از روی image ها میباشد که روی کرنل داکر اجرا میگردد و از بقیه کانتینرها ایزوله میباشد.
- رجیستری داکر یا Docker Registry : رجیستری یک فضای ذخیره سازی ست که برای نگهداری image ها بکار میرود.
نصب داکر در ویندوز
قبل از این برای نصب داکر لازم میبود که یک لینوکس مجازی روی ویندوز نصب نمود و سپس داکر روی آن لینوکس مجازی نصب نمود. ولی مایکروسافت در ویندوز 10 و ویندوز سرور 2016 کاری کرده تا با دانلود و نصب پکیج مربوط به docker از مزایای داشتن داکر روی ویندوز بدون نصب لینوکس مجازی بهره برد.
برای نصب docker در ویندوز سرور 2016 مراحل زیر را طی کنید :
- ابتدا سیستم عامل ویندوز سرور 2016 را روی یک سرور یا ماشین مجازی نصب و راه اندازی مینماییم.
- سپس بایستی مطمئن شویم که ویندوز به روز رسانی شده و از طریق پنل update & security در کنترل پنل این مهم را چک میکنیم .
- پاورشل ویندوز را اجرا کرده و با استفاده از دستور Install-Module -Name DockerMsftProvider -Repository PSGallery –Force ماژول Nuget PowerShel را نصب میکنیم.بایستی منتظر باشیم تا این پکیج نصب گردد.
- حال با استفاده ار دستور Install-Package -Name docker -ProviderName DockerMsftProvider -verbose در پاورشل ، سرویس داکر را نصب میکنیم.در صورت پرسش از ما که آیا به این پکیج trust یا اعتماد دارید پاسخ yes میدهیم.بعد از اجرا کردن این دستور قابلیت windows container و سرویس داکر در سیستم عامل نصب و فعال میگردد.
- سیستم را ریستارت میکنیم تا نصب docker در مرحله قبل تکمیل گردد.
- با استفاده از دستور get-service docker وضعیت سرویس داکر را بررسی میکنیم و در صورت stop بودن سرویس دستور start-service docker را وارد میکنیم.
- برای اطمینان از صحت نصب سرویس به مسیر C:\Program Files میرویم بایستی فولدر داکر و فایل های docker.exe ، dockerd.exe ، metadata.json داخل فولدر docker موجود باشند.
- با استفاده از دستور docker version ورژن داکر را بررسی میکنیم که در خروجی این دستور ورژن کلاینت و سرور داکر نصب شده قابل مشاهده میباشد.