داکر چیست؟ عملکرد Docker به چه صورت است؟
در این مطلب میخواهیم یکی از محصولاتی که به صورت تخصصی در حوزه مجازی سازی سیستم عامل فعالیت دارد، را معرفی و بررسی کنیم. نام این محصول داکر (Docker) است که نوعی پلتفرم متن باز به شمار میرود. برای اینکه دقیقا بدانید داکر چیست و چگونه کار میکند تا پایان این مطلب همراه ما باشید.
داکر چیست و چه کاربردی دارد؟
داکر (Docker) یک پلتفرم متن باز است که بر مبنای سیستم عامل لینوکس راهاندازی شده است. در پاسخ به سوال داکر چیست، خیلی ساده میتوان گفت، ابزاری است که میتواند فرایند ایجاد، پیاده سازی و اجرای برنامهها را با استفاده از Container ها بسیار ساده کند.
پاسخ دیگر به سوال داکر چیست، میتواند این باشد که Docker، نوعی ماشین مجازی است و این امکان را برای برنامهها فراهم میکند تا از یک Kernel واحد لینوکس استفاده کرده و از امکاناتی بهره مند شوند که در سیستم عامل میزبان ارائه نشده است. به این ترتیب میتوانند به صورت مستقل از پیش نیازها و امکانات مازاد بهره برداری کنند. این موضوع باعث میشود سرعت و عملکرد برنامه بهبود قابل ملاحظهای پیدا کند و حجم آن نیز کاهش یابد.
کانتینر (Container) چیست؟
نگهداری برنامهها در محیطی ایزوله و به صورت مستقل، از اهداف سیستمهای جدید توسعه نرم افزار است. به این ترتیب فعالیت آنها بر روی یکدیگر تاثیری نداشته و کاملا مستقل از هم کار میکنند. یکی از راههای پیاده کردن این تکنولوژی استفاده از ماشین مجازی (Virtual Machine) است که برنامهها را روی یک سخت افزار اما جدا از هم نگهداری میکند. در این حالت component ها با هم تداخل نداشته و رقابت برای استفاده از منابع سخت افزاری به حداقل میرسد.
اما کانتینر چیست؟ در مقابل ماشینهای مجازی، کانتینرها( Container ) قرار دارند، آنها میتوانند جایگزین مناسبی برای ماشینهای مجازی باشند. کانتینرها محیطهای اجرایی را جدا کرده و هسته سیستم عامل را به اشتراک میگذارد. کانتینرها نسبت به ماشینهای مجازی از منابع کمتری استفاده میکنند و همچنین خیلی سریع قابلیت اجرا پیدا میکنند.
میتوان کانتینرها را به 3 بخش تقسیم کرد که عبارتند از:
- سازنده (Builder): فناوری مورد استفاده برای ساخت کانتینر
- موتور (Engine): فناوری مورد استفاده برای راهاندازی کانتینر
- تنظیم (Orchestration): فناوری مورد استفاده برای تنظیمات و مدیریت کانتینر
کانتینر داکر چیست؟
هر چند مفهوم container از مدتها قبل در حوزه IT مطرح بوده، اما معرفی و ارائه داکر به عنوان یک پروژه متن باز باعث شد استفاده از container ها دوباره فراگیر شود.
کانتینر (Container) این امکان را برای توسعه دهندگان فراهم میکند تا بسته کاملی از برنامههای خود همراه تمامی بخشهای مورد نیاز آن ایجاد کرده و آن را در قالب یک بسته واحد ارسال کنند.
با وجود کانتینرها، توسعه دهندگان میتوانند اطمینان داشته باشند که برنامه داکر در هر ماشین، با سیستم عامل لینوکس بدون توجه به تنظیمات سفارشی قابل اجرا و استفاده است. ماشین جدید میتواند تنظیماتی متفاوت با ماشینی که برنامه روی آن طراحی شده، داشته باشد.
برای ساخت یک برنامه داکر و همچنین کار با داکر باید از کامپوننتهای مختلف استفاده کنیم. در ادامه این کامپوننتها را معرفی و بررسی میکنیم.
هر کانتینر داکر به وسیله یک فایل داکر شروع به کار میکند. در پاسخ به سوال داکر فایل چیست، به سادگی میتوان گفت 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 Build را فراخوانی میکنید که وظیفه دارد یک Image بر اساس محتویات Dockerfile شما بسازد. Docker Image یک فایل قابل حمل و شامل یک سری دستورالعمل است که مشخص میکند Container کدام کامپوننتهای نرم افزاری را اجرا کند و اینکه چطور آن را اجرا کند.
ویژگی Docker run در واقع نوعی دستور است که کانتینر را راهاندازی میکند. هر Container یک نمونه یا مثال از Image است و ماهیت کانتینر به صورت موقتی است. با این حال میتوان آنها را متوقف کرد یا مجددا راهاندازی نمود. هر Image به شرط وجود نام منحصر به فرد، میتواند تعداد زیادی کانتینر داشته باشد.
قابلیت Docker Hub یک مخزن Saas برای مدیریت و به اشتراک گذاری کانتینرها است. در این قسمت میتوانید تصاویر رسمی داکر که معمولا به صورت متن باز هستند را پیدا کنید.
این بخش، هسته اصلی داکر به حساب میآید. در واقع وقتی کسی درباره داکر صحبت میکند، دارد درباره Docker Engine حرف میزند. این ویژگی در دو نسخه Enterprise و Community ارائه میشود. نسخه Community به صورت متن باز و کاملا رایگان است، در حالی که نسخه Enterprise، با ویژگیها و قابلیتهای اضافه، برای هر Node سالانه نزدیک به 1500 دلار هزینه دارد.
مکانیزم عملکرد داکر چیست؟
تا اینجا دانستیم داکر چیست و کانتینرها به چه شکل عمل میکنند، در این بخش قصد داریم مکانیزم عملکرد داکر را بررسی کنیم.
داکر (Docker) یک لایه واسطه بین سیستم عامل اصلی و بسته نرم افزاری ایجاد میکند. در واقع با استفاده از این لایه، نرم افزارها را از یکدیگر تفکیک میکند. در سیستم عامل لینوکس قابلیتهایی برای تفکیک و ایزوله کردن منابع وجود دارد که هم هسته سیستم عامل و هم گروهها و منابع سخت افزاری و نرم افزاری سیستم عامل را به صورت ایزوله و تفکیک شده در اختیار نرم افزارها قرار میدهد، که سیستم داکر نیز از آنها استفاده میکند.
به عنوان مثال، قابلیتهایی مانند cgroups و kernel namespaces از جمله مواردی هستند که Docker از آنها استفاده میکند.
و در انتها…
همان طور که بیان کردیم، داکر یک ابزار اپن سورس با بازدهی بسیار بالا برای طراحی و ساخت برنامهها به کمک کانتینر است. Container به یک برنامه نویس کمک میکند تا پروژه خود را با تمام بخشهای آن به صورت یک بسته درآورد. او با وجود این تکنیک، میتواند مطمئن باشد که پروژه اش در سیستمهای دیگر بدون نیاز به ابزارها یا تنظیمات خاص، اجرا میشود.
در این مطلب سعی کردیم برای سوال داکر چیست، پاسخ مناسبی پیدا کنیم. همچنین مکانیزم عملکرد این سیستم را نیز مورد بررسی و مطالعه قرار دهیم.
تاریخ دقیق:
2020-12-04 14:35:41
لینک مرجع:
https://www.irandnn.ir/mag/what-is-docker/