مجله اینترنتی تخصصی نرم افزار

داکر چیست؟ عملکرد Docker به چه صورت است؟

زمان مطالعه: 5 دقیقه

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

داکر چیست و چه کاربردی دارد؟

داکر (Docker) یک پلتفرم متن باز است که بر مبنای سیستم عامل لینوکس راه‌اندازی شده است. در پاسخ به سوال داکر چیست، خیلی ساده می‌توان گفت، ابزاری است که می‌تواند فرایند ایجاد، پیاده سازی و اجرای برنامه‌ها را با استفاده از Container ها بسیار ساده کند.

داکر چیست

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

کانتینر (Container) چیست؟

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

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

می‌توان کانتینرها را به 3 بخش تقسیم کرد که عبارتند از:

سازنده (Builder):

فناوری مورد استفاده برای ساخت کانتینر

موتور (Engine):

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

تنظیم (Orchestration):

فناوری مورد استفاده برای تنظیمات و مدیریت کانتینر

کانتینر داکر چیست؟

هر چند مفهوم container از مدت‌ها قبل در حوزه IT مطرح بوده، اما معرفی و ارائه داکر به عنوان یک پروژه متن باز باعث شد استفاده از container ها دوباره فراگیر شود.

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

کانتینر داکر چیست

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

برای ساخت یک برنامه داکر و همچنین کار با داکر باید از کامپوننت‌های مختلف استفاده کنیم. در ادامه این کامپوننت‌ها را معرفی و بررسی می‌کنیم.

Dockerfile

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

در جدول زیر کلمات کلیدی مورد استفاده در داکرفایل را توضیح داده ایم.

توضیح

دستور مورد استفاده

مشخص کردن image مورد استفاده در Container

FROM

سازنده و توصیحاتContainer

MAINTAINER

اجرا کردن دستور هنگام ساخته شدن Container

RUN

اجرا کردن یک دستور بعد از ساخته شدن Container

CMD

اجرا کردن یک دستور بعد از ساخته شدن Container

ENTERYPOINT

اضافه کردن متادیتا به Container

LABEL

مشخص کردن پورت هایی که Container بعد بالا آمدن اجازه دسترسی به آن را می دهد

EXPOSE

اضافه کردن متغییرهای محلی به Container

ENV

اضافه یا کپی یا لینک کردن فایل یا دایرکتوری به Container

ADD

اضافه یا کپی فایل یا دایرکتوری به Container بدون لینک کردن

COPY

اضافه کردن یک mount point در ماشین میزبان یا Containerهای دیگر

VOLUME

ست کردن یک user یا UID در Container

USER

ست کردن دایرکتوری اجرایی در Container

WORKDIR

 

Docker image

زمانی که کار نوشتن داکر فایل تمام شد، یک قابلیت به اسم Docker Build را فراخوانی می‌کنید که وظیفه دارد یک Image بر اساس محتویات Dockerfile شما بسازد. Docker Image یک فایل قابل حمل و شامل یک سری دستورالعمل است که مشخص می‌کند Container کدام کامپوننت‌های نرم افزاری را اجرا کند و اینکه چطور آن را اجرا کند.

Docker run

ویژگی Docker run در واقع نوعی دستور است که کانتینر را راه‌اندازی می‌کند. هر Container یک نمونه یا مثال از Image است و ماهیت کانتینر به صورت موقتی است. با این حال می‌توان آن‌ها را متوقف کرد یا مجددا راه‌اندازی نمود. هر Image به شرط وجود نام منحصر به فرد، می‌تواند تعداد زیادی کانتینر داشته باشد.

Docker Hub

قابلیت Docker Hub یک مخزن Saas برای مدیریت و به اشتراک گذاری کانتینرها است. در این قسمت می‌توانید تصاویر رسمی داکر که معمولا به صورت متن باز هستند را پیدا کنید.

Docker Engine

این بخش، هسته اصلی داکر به حساب می‌آید. در واقع وقتی کسی درباره داکر صحبت می‌کند، دارد درباره Docker Engine حرف می‌زند. این ویژگی در دو نسخه Enterprise و Community ارائه می‌شود. نسخه Community به صورت متن باز و کاملا رایگان است، در حالی که نسخه Enterprise، با ویژگی‌ها و قابلیت‌های اضافه، برای هر Node سالانه نزدیک به 1500 دلار هزینه دارد.

مکانیزم عملکرد داکر چیست؟

مکانیزم عملکرد داکر

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

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

به عنوان مثال، قابلیت‌هایی مانند cgroups و kernel namespaces از جمله مواردی هستند که Docker از آنها استفاده می‌کند.

و در انتها…

همان طور که بیان کردیم، داکر یک ابزار اپن سورس با بازدهی بسیار بالا برای طراحی و ساخت برنامه‌ها به کمک کانتینر است. Container به یک برنامه نویس کمک می‌کند تا پروژه خود را با تمام بخش‌های آن به صورت یک بسته درآورد. او با وجود این تکنیک، می‌تواند مطمئن باشد که پروژه اش در سیستم‌های دیگر بدون نیاز به ابزارها یا تنظیمات خاص، اجرا می‌شود.

در این مطلب سعی کردیم برای سوال داکر چیست، پاسخ مناسبی پیدا کنیم. همچنین مکانیزم عملکرد این سیستم را نیز مورد بررسی و مطالعه قرار دهیم.

مطالب مشابه
32 نظر
  1. سیاوش می گوید

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

    1. ریحانه وزیری می گوید

      کاملا موافق صحبت شما هستم.

    2. امیر می گوید

      مردم عادی و چه داکر بازی، خوب بود توضیحات

    3. بهنام می گوید

      بیخیال دوسال گذشته اما اینقدر مقاله طولانی نبود که کسی بخواد اذیت بشه اونجایی رو که لازم داری بخون استفاده کن مطلب مورد نظرت نبود برو یه سایت دیگه جستجو کن به همین سادگی … عملگرا و عرف و اینا اصلا ربطی به این موضوع نداشت موفق باشید.

  2. محمد حیدری می گوید

    خیلی شفاف و ساده و روون توضیح دادند.

  3. محسن می گوید

    عالی بود

  4. امیر مرادی می گوید

    بسیار توضیحات روان و قابل فهمی بود ممنونم.

  5. عادل می گوید

    به نظرم عالی بود س‍پاسگزارم

  6. tarane می گوید

    awli

  7. علی می گوید

    من که نفهمیدم چی شد،خیلی سخت بود!!کاش یک مثالی و آموزشی از نحوه استفاده ازش میگذاشتید و منوهاش رو توضیح میدادی ممنون.

  8. علی می گوید

    من که نفهمیدم چی شد!!خیلی سخت شد،کاش یک مثالی از نحوه استفاده ازش و کار با منوهاش میگزاشتید ممنون

  9. امین می گوید

    نه

  10. اسی می گوید

    به نظرم خیلی مطلب رو سخت توضیح دادید.

  11. بهزاد می گوید

    بسیار ساده و روان بود. ممنون

  12. فرزاد می گوید

    خیلی عالی ممنونم از توضیحاتتون

  13. بزار ناشناس بمونه می گوید

    خیلی ممنون زحمت کشیدین از توضیحات کاربردی تون.
    یاد بگیریم که زحمت دیگران رو کوچک نشمریم 🙂

  14. علیرضا می گوید

    ممنون مفید و قابل استفاده بود

  15. محسن می گوید

    عالی

  16. منی‌فوس می گوید

    واقعا مطلب مفیدی بود – من قبل از اینکه توضیحات فارسی داکر و مطالعه کنم، با شناخت قبلی که از داکر و کانتینرها داشتم با کمک API یک ربات تریدر Cryptocurrency با زبان پایتون تو محیط داکر پیاده‌سازی و اجرا کردم. ۲۴/۷ درحال اجراست (البته قبل از استارت Backtest) انجام شد. و اینکه داکر کمک خوبی تو این زمینه بهم کرد البته به طرق دیگه‌ای میشد ربات رو Run کرد اما داکر بهترین و درست‌ترین راه هست. (در حال حاضر)

  17. محمد می گوید

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

  18. heidari می گوید

    سلام کامل و قابل فهم نبود. من برنامه نویس نیستم و برام جای سوال موند که آیا این یک برنامه اس؟ منظور از ماشین مجازی چیه؟ برای ویندوز امکان پذیر نیست؟ برای اجرای برنامه های تدوین مناسبه؟

    1. مریم خیراندیش می گوید

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

  19. Elena می گوید

    برای منی که کلی سرکلاس مثال ازش دیدم و کلی باهاش کار کردم ولی عمیق نمیدونستم چرا فلان کار رو میکنیم اصلا عالی بود عالیییی

    1. مریم خیراندیش می گوید

      ممنون از توجه شما

    2. مریم خیراندیش می گوید

      ممنون از توجه شما دوست عزیز

  20. مسافر زمان می گوید

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

    1. مریم خیراندیش می گوید

      سلام. ممنونم از لطف شما

  21. دکتر می گوید

    خوب و مفید بود . پاینده باشید
    کلیات و مفهوم داکر خوب توضیح داده شده است.

    1. مریم خیراندیش می گوید

      سلام، ممنون از توجه شما

  22. فاطمه می گوید

    سلام خیلی ممنون:)

    1. مریم خیراندیش می گوید

      سلام. ممنون از توجه شما

  23. علی می گوید

    عالی بود

ارسال نظر

آدرس ایمیل شما منتشر نخواهد شد.