نیک آموز > وبلاگ > DevOps > سرویس داکر چیست؟ ۰ تا ۱۰۰ معرفی وکاربرد سرویس داکر
سرویس داکر چیست؟ ۰ تا ۱۰۰ معرفی وکاربرد سرویس داکر

سرویس داکر چیست؟ ۰ تا ۱۰۰ معرفی وکاربرد سرویس داکر

نوشته شده توسط: احمد رفیعی
تاریخ انتشار: ۱۵ دی ۱۳۹۷
آخرین بروزرسانی: 07 بهمن 1404
زمان مطالعه: 16 دقیقه
۴
(۲)

سرویس داکر (Docker) به زبان ساده یک پلتفرم متن باز می‌باشد که بر مبنای سیستم‌عامل لینوکس و قابلیت کرنل آن راه‌اندازی شده است. داکر با استفاده از دو قابلیت مهم موجود در کرنل لینوکس به نام‌های Cgroups و Namespase امکانی را فراهم می‌کند که پروسه‌ها و نرم‌افزارها به صورت مجزا در محیط کاملا ایزوله‌ای بر روی کرنل لینوکس راه‌اندازی شود که به این محیط و بسته‌ی ایزوله، کانتینر (Container) می‌گویند. یکی از بزرگترین مزایای داکر سهولت کار با آن بوده و دیگر اینکه می‌توان با استفاده از آن در ویندوز و مکینتاش نیز از کانتینرها و دستورات داکر استفاده کرد. داکر از ابتدای راه‌اندازی توجه کامل به ویندوز و مکنیتاش داشته و تمام امکانات خود را برای این دو سیستم‌عامل نیز به صورت کامل فراهم آورده است.

معرفی سرویس داکر
معرفی سرویس داکر

تاریخچه سرویس داکر

در سال ۲۰۱۳ سرویس داکر به صورت رسمی ارائه شد. در همان ابتدا شرکت Redhat که یکی از بزرگترین کمپانی‌های لینوکس و سرویس‌های زیرساخت در دنیا می‌باشد اعلام کرد که پروژه‌های خود را به سمت این سرویس برده و از این پروژه حمایت می‌کند. شرکت بزرگ IBM در سال ۲۰۱۴ اعلام کرد که سرویس‌های خود را به سمت استفاده از داکر خواهد برد. در همین سال شرکت مایکروسافت که اون زمان هنوز رویکرد متن بسته‌ی (Closed Source) خود را داشت، اعلام کرد که نسخه‌ی آینده‌ی ویندوز سرور خود را به سمتی خواهد برد که بتواند از داکر استفاده کند و بتوان در ویندوز به صورت کامل از دستورات داکر استفاده کرد. در سال ۲۰۱۸ شرکت مایکروسافت تمام گواهینامه‌های خود را متن باز (Open Source) کرده و تمام کد‌های آن را در اینترنت قرار داد و با توجه به این اقدام شرکت مایکروسافت یکی از بزرگترین شرکت‌های متن باز دنیا می‌باشد. در حال حاضر ویندوزهای جدید مایکروسافت به صورت کامل امکان استفاده از سرویس داکر را دارند. در سال ۲۰۱۶ داکر نسخه‌ی Enterprise خود را ارائه داد تا قبل از این تنها نسخه‌ی Community آن وجود داشت. در حال حاضر هر دو نسخه از این سرویس وجود دارد.

تاریخچه سرویس داکر

 

سرویس داکر و ویندوز

قبلاً اجرای سرویس‌های ویندوز در قالب کانتینر امکان‌پذیر نبود، اما با توسعه پشتیبانی مایکروسافت از سرویس داکر، این محدودیت برطرف شده است. امروزه می‌توان سرویس‌های ویندوزی را همانند سرویس‌های لینوکسی در قالب کانتینر اجرا، مدیریت و جابه‌جا کرد و از مزایای سرویس داکر در محیط ویندوز نیز بهره برد.

نصب سرویس داکر روی ویندوز؛ قدم اول برای شروع کار با Docker

اگر با مفهوم سرویس داکر آشنا شده‌اید، این ویدیو به شما کمک می‌کند تا نصب داکر را به‌صورت مرحله‌به‌مرحله روی ویندوز یاد بگیرید. این آموزش مقدماتی، گامی مهم در مسیر استفاده عملی از داکر برای توسعه و مدیریت برنامه‌هاست.

 

مزایای سرویس داکر

در این بخش از مقاله به مزایای قابل توجه سرویس داکر به‌صورت مفصل خواهیم پرداخت. با ما همراه باشید:

 

سرویس داکر بسیار کم حجم و سریع می باشد

سرویس داکر با استفاده از قابلیت‌های Namespace و CGroups کرنل لینوکس، امکانی را فراهم می‌آورد که با توجه به مشترک بودن کرنل لینوکس میزبان (Docker Host) بین تمام کانتینرها، محیط‌های ایزوله و مستقلی را ایجاد کند تا پروسه‌ها بدون تاثیر بر روی یکدیگر هر کدام به صورت مجزا در کانتینر خود اجرا شود. این امکان به شدت در حجم محصول نهایی موثر بوده و آن را به مراتب کم حجم‌تر و سبک‌تر خواهد کرد. نکته‌ی مهم دیگه اینکه با توجه به قابلیت لایه‌‌ای بودن ایمیج‌ها از لایه‌های تکراری به صورت اشتراکی استفاده می‌شود و این موضوع نیز به شدت در حجم کانتینر‌ها موثر خواهد بود. سبک‌تر شدن کانتینرها باعث می‌شود تا سرعت بیشتری را نیز شاهد باشیم.

 

راه‌اندازی کامل سرویس‌های عملیاتی در محیط‌های مختلف
راه‌اندازی کامل سرویس‌های عملیاتی در محیط‌های مختلف

راه‌اندازی کامل سرویس‌های عملیاتی در محیط‌های مختلف

از مهمترین دغدغه‌های سرویس‌های عملیاتی تست‌، به روزرسانی‌ و نگهداری سرویس‌ها می‌باشد. به دلیل اینکه ایجاد محیطی همانند محیط عملیاتی پیاده‌سازی شده همواره پر هزینه و دشوار می‌باشد از این رو به روز‌رسانی‌ها و یا هر اقدام دیگری در آزمایشگاه‌هایی متفاوت با محیط عملیاتی انجام می‌شود که معمولا درست اعمال شده اما در محیط عملیاتی با مشکل مواجه می‌شوند. به این مشکل این را نیز اضافه کنید که ممکن است در یک پروژه چندین محیط آزمایشگاهی با تمام امکانات محیط عملیاتی برای تیم‌های متفاوت نیاز باشد. این مشکل با استفاده از داکر به صورت کامل برطرف خواهد شد. شما می‌توانید دقیقا همانند همان چیزی که در محیط عملیاتی خود مورد استفاده قرار داده‌اید را در محیط‌های آزمایشگاهی و محیط‌های توسعه‌ی سرویس با کمترین زمان و هزینه و منابع دارا باشید. حتی می‌توانید کل سرویس خود را بر روی رایانه‌ی خود داشته و موارد مربوط به آن را بررسی نمایید.

صفر تا صد آموزش برنامه‌نویسی در نیک آموز

قابلیت مقیاس‌پذیری (Scalability) سرویس داکر

مقیاس‌پذیری از مهم‌ترین قابلیت‌های داکر و میکروسرویس‌ها می‌باشد. تنها این دلیل به اندازه کافی ایجاب می‌کند تا برای پروژه‌ی خود از سرویس داکر استفاده کنید. با استفاده از داکر به خوبی می‌توان مقیاس‌پذیری را در تمام سطح پروژه‌ی خود پیاده‌سازی کرده و مهم‌تر از آن اینکه می‌توان به خوبی مقیاس‌پذیری خودکار (Auto Scaling) را ایجاد کرد. با توجه به این موضوع در هنگام اوج درخواست‌ و نیاز اساسی به منابع میزان آنها افزایش یافته و پس از برطرف شدن نیاز آن منابع کاهش یابد و به صورت خودکار جمع‌آوری شود. که این موضوع هم در کیفیت سرویس‌دهی شما بسیار موثر خواهد بود و هم هزینه‌های شما را به شدت کاهش خواهد داد بر این اساس شما می‌توانید کل پروژه را در محیط دیگری آماده نمایید و سپس آن را به محیط عملیاتی خود منتقل کنید. این قابلیت امکان به اشتراک‌گذاری سرویس‌های پیاده‌سازی شده را نیز فراهم می‌آورد

قابلیت بخش‌بندی (Modularity) و قابل حمل بودن (Portability) سرویس داکر

قابلیت مقیاس‌پذیری (Scalability) سرویس داکر
قابلیت مقیاس‌پذیری (Scalability) سرویس داکر

 

یکی دیگر از قابلیت‌های مهم داکر قابلیت قسمت‌بندی کردن پروژه می‌باشد که می‌توان با استفاده از آن پروژه‌‌ای بزرگ را به بخش‌های کوچک‌تر تقسیم کرد که هر بخش را به صورت مستقل پیاده‌سازی و اجرا کرد. سپس تمام بخش‌ها را کنار هم قرار داده و سرویس اصلی را ایجاد نمود. این موضوع در پروژه‌های بزرگ به شدت موثر بوده و سرعت اجرا و پیاده‌سازی آن را افزایش می‌دهد. از دیگر قابلیت‌های مهم قابل حمل بودن می‌باشد.

قابلیت بخش‌بندی (Modularity) و قابل حمل بودن (Portability)
قابلیت بخش‌بندی (Modularity) و قابل حمل بودن (Portability)

 

بر این اساس شما می‌توانید کل پروژه را در محیط دیگری آماده نمایید و سپس آن را به محیط عملیاتی خود منتقل کنید. این قابلیت امکان به اشتراک‌گذاری سرویس‌های پیاده‌سازی شده را نیز فراهم می‌آورد.

معایب سرویس داکر

داکر با اینکه در مدیریت و اجرای کانتینرها بسیار قدرتمند است، اما معایبی هم دارد که باید در تصمیم‌گیری به آنها توجه شود. از جمله اینکه کانتینرها به‌طور کامل مثل ماشین‌های مجازی ایزوله نیستند و در برخی سناریوها ممکن است مشکلات امنیتی ایجاد کنند، به‌خصوص اگر کانتینرها به‌صورت نادرست پیکربندی شوند یا سطح دسترسی بالایی داشته باشند. همچنین داکر برای اجرای برنامه‌های پیچیده و وابسته به سخت‌افزار خاص ممکن است محدودیت داشته باشد، چون کانتینرها محیط سبک و استانداردی دارند و به‌طور کامل به سخت‌افزار دسترسی ندارند. از طرفی، مدیریت و عیب‌یابی کانتینرها در مقیاس بزرگ نیازمند ابزارها و دانش خاصی است و بدون آن، نظم و پایش سیستم‌ها دشوار می‌شود. علاوه بر این، اجرای کانتینرها در محیط‌های ویندوز و مک معمولاً با استفاده از ماشین مجازی انجام می‌شود که باعث افزایش مصرف منابع و کاهش کارایی می‌شود.

سرویس داکر چطور کار می‌کند

داکر مثل یک جعبه‌ی جادویی برای برنامه‌هاست که به برنامه اجازه می‌دهد در یک محیط بسته و مستقل از سیستم عامل اجرا شود. وقتی شما یک برنامه را با داکر اجرا می‌کنید، ابتدا یک ایمیج (Image) ساخته می‌شود که شامل کد برنامه، کتابخانه‌ها، تنظیمات و وابستگی‌های لازم است. سپس این ایمیج در قالب یک کانتینر (Container) اجرا می‌شود؛ کانتینر مانند یک محیط جداشده است که برنامه داخل آن اجرا می‌شود ولی همچنان از هسته سیستم عامل میزبان استفاده می‌کند. داکر برای جداسازی منابع و مدیریت کانتینرها از امکانات هسته سیستم عامل مثل Namespaces و cgroups استفاده می‌کند تا هر کانتینر فضای فایل، شبکه و پردازش‌های مستقل خود را داشته باشد. این ساختار باعث می‌شود برنامه‌ها روی هر سیستمی که داکر نصب باشد، با همان رفتار اجرا شوند و دیگر مشکلی مثل «روی سیستم من کار می‌کند» وجود نداشته باشد.

 

سرویس داکر چطور کار می‌کند
سرویس داکر چطور کار می‌کند

 

دستورات اساسی سرویس داکر 

۱. نمایش نسخه داکر
docker --version
2. دانلود یک ایمیج (Pull)
docker pull <image-name>
3. اجرای یک کانتینر (Run)
docker run <options> <image-name>
4. نمایش کانتینرهای در حال اجرا
docker ps
5. نمایش تمام کانتینرها (حتی متوقف‌شده‌ها)
docker ps -a
6. توقف یک کانتینر
docker stop <container-id>
7. حذف یک کانتینر
docker rm <container-id>
8. نمایش ایمیج‌های موجود
docker images
9. حذف یک ایمیج
docker rmi <image-id>
10. ورود به داخل یک کانتینر (Exec)
docker exec -it <container-id> /bin/bash
11. مشاهده لاگ‌های کانتینر
docker logs <container-id>
12. ساخت ایمیج از Dockerfile (Build)
docker build -t <image-name>.
13. مشاهده اطلاعات کلی داکر
docker info

 

سخن پایانی سرویس داکر

با توجه به تغییر رویکرد شرکت مایکروسافت و تغییراتی که بر روی سرویس‌ها و سیستم‌عامل خود ایجاد کرده و رشد روزافزون سرویس‌ داکر و کلا رویکرد میکروسرویس‌ها این تعامل بسیار مفید و پرثمر خواهد بود. با اضافه شدن این امکان می‌توان به خوبی سرویس‌های ویندوزی را داخل پلتفرم‌های مختلف راه‌اندازی، توسعه و نگهداری کرد. این موضوع خیلی اهمیت داشته و با استفاده از آن می‌توان به خوبی از پلتفرم‌های متعدد موجود استفاده کرد. شما میتوانید درباره نظرات و تجربیات ارزشمند خود در این زمینه با ما در نیک آموز در میان بگذارید. 

 

سوالات متداول سرویس داکر

۱. سرویس داکر چگونه محیط‌های ایزوله برای اجرای نرم‌افزارها ایجاد می‌کند؟

داکر با استفاده از قابلیت‌های کرنل لینوکس شامل Namespaces و Cgroups، امکان اجرای پروسه‌ها و نرم‌افزارها را در محیط‌هایی کاملاً مجزا فراهم می‌کند. این محیط‌های ایزوله که «کانتینر» نام دارند، با وجود اشتراک هسته سیستم‌عامل میزبان، منابع مستقلی مانند پردازش، شبکه و فایل سیستم دارند و بدون تداخل با یکدیگر اجرا می‌شوند.

۲. چرا داکر نسبت به ماشین‌های مجازی سبک‌تر و سریع‌تر است؟

در داکر تمام کانتینرها از کرنل مشترک سیستم‌عامل میزبان استفاده می‌کنند و نیازی به اجرای سیستم‌عامل جداگانه برای هر سرویس نیست. همچنین ساختار لایه‌ای ایمیج‌ها باعث می‌شود لایه‌های تکراری به‌صورت اشتراکی استفاده شوند که این موضوع حجم نهایی و مصرف منابع را کاهش داده و سرعت اجرا را افزایش می‌دهد.

۳. آیا امکان استفاده از داکر روی ویندوز وجود دارد؟

بله. در حال حاضر ویندوزهای جدید مایکروسافت به‌صورت کامل از سرویس داکر پشتیبانی می‌کنند و امکان اجرای سرویس‌ها و حتی هسته سیستم‌عامل ویندوز داخل کانتینرها فراهم شده است. این قابلیت باعث می‌شود بتوان سرویس‌های ویندوزی را مشابه سرویس‌های لینوکسی مدیریت و اجرا کرد.

۴. داکر چه نقشی در مقیاس‌پذیری و مدیریت سرویس‌های بزرگ دارد؟

داکر امکان پیاده‌سازی مقیاس‌پذیری خودکار (Auto Scaling) را فراهم می‌کند؛ به این معنا که در زمان افزایش درخواست‌ها، منابع به‌صورت خودکار افزایش یافته و پس از کاهش بار، منابع اضافه آزاد می‌شوند. این ویژگی علاوه بر بهبود کیفیت سرویس‌دهی، باعث کاهش چشمگیر هزینه‌ها می‌شود.

۵. مهم‌ترین محدودیت‌های سرویس داکر چیست؟

طبق متن، کانتینرهای داکر به‌طور کامل مانند ماشین‌های مجازی ایزوله نیستند و در صورت پیکربندی نادرست می‌توانند مشکلات امنیتی ایجاد کنند. همچنین مدیریت و عیب‌یابی کانتینرها در مقیاس بزرگ نیازمند ابزارها و دانش تخصصی است و اجرای داکر در ویندوز و مک معمولاً با استفاده از ماشین مجازی انجام می‌شود که مصرف منابع را افزایش می‌دهد.

چه رتبه ای می‌دهید؟

میانگین ۴ / ۵. از مجموع ۲

اولین نفر باش

title sign
دانلود مقاله
سرویس داکر چیست؟ ۰ تا ۱۰۰ معرفی وکاربرد سرویس داکر
فرمت PDF
صفحه
حجم مگابایت
دانلود مقاله
title sign
معرفی نویسنده
احمد رفیعی
مقالات
2 مقاله توسط این نویسنده
محصولات
3 دوره توسط این نویسنده
احمد رفیعی

احمد رفیعی متخصص و مشاور ارشد لینوکس، زیرساخت و داکر است. از دیگر تجربه های حرفه ای او می توان به مشاور زیرساخت شرکت سنجاق، مدیر زیرساخت شرکت خلاق برهان، متخصص، مشاور حرفه‌ای داکر (Docker)، طراحی و پیاده سازی زیرساخت‌های سازمانی بصورت حرفه‌ای، متخصص و مشاور حرفه‌ای لینوکس، طراح و متخصص پیاده‌سازی سرویس‌ها و پلتفرم‌های محاسباتی ابری (PaaS , IaaS)، طراحی و پیاده‌سازی سرویس‌های CDN بر پایه لینوکس، راه‌اندازی و مدیریت‌ سرویس‌های Firewall بر پایه لینوکس، متخصص Ceph Storage، طراحی و پیاده‌سازی سرویس‌های مانیتورینگ شبکه و زیرساخت، مدرس CDN شرکت زیرساخت ایران اشاره کرد.

title sign
معرفی محصول
title sign
دیدگاه کاربران

    • با سلام و تشکر
      آیا این خصوصیاتی که در مورد داکر ذکر کردید در ارتباط با سیستم عامل اندروید هم وجود دارد
      یعنی سرویس ها و پروژه های ویندوزی را بتوان تحت اندروید نصب و راه اندازی نمود.

      • درود وقت بخیر
        به نقل از مهندس رفیعی
        برای اینکه داکر کار کنید نیاز به کرنل لینوکس دارید
        با تشکر

    • با سلام و تشکر
      آیا این خصوصیاتی که در مورد داکر ذکر کردید در ارتباط با سیستم عامل اندروید هم وجود دارد
      یعنی سرویس ها و پروژه های ویندوزی را بتوان تحت اندروید نصب و راه اندازی نمود.

      • درود وقت بخیر
        به نقل از مهندس رفیعی
        برای اینکه داکر کار کنید نیاز به کرنل لینوکس دارید
        با تشکر

    • بسیار عالی جناب رفیعی عزیز