(Docker) داکر از نام های آشنا این روزها برای برنامه نویسان می باشد. داکر، یکی از ابزارهای بسیار معروف در جهان برنامهنویسی است و این روزها جز پرطرفدارترین ابزارها برای توسعه و مدیریت برنامهها و سرویسها محسوب میشود. بنابراین یادگیری آن را برای افرادی که در حوزه برنامه نویسی کار می کنند اهمیت بالای دارد. در این جا می خواهیم بفهمیم چرا داکر اینقدر معروف و ضروری هست و چه کاری را برای ما انجام می دهد.
چرا به Docker نیاز داریم ؟
ابتدا که با داکر آشنا می شویم، اولین سوالی در ذهن مان شکل می گیرید، این است که چرا باید از داکر استفاده کنیم و چرا به آن نیاز داریم.
اگر در برنامه نویسی فعالیت داشته باشید، احتمالا با این وضعیت روبه رو شدید که می خواهید برنامه ای که نوشته اید را در سیستم دیگری اجرا کنید، اما با مشکل روبه رو می شوید و ساعت ها مشغول حل آن باشید. کامپیوترها، سیستم عامل ها، برنامه های نصب شده در هر سیستم و تنظیمات هر سیستم با سیستم دیگری متفاوت هست. این موراد باعث می شود که برنامه ای که در سیستم شما به بهترین شکل اجرا می شود در سیستم دیگری اجرا نشود.
برنامه نویسان همواره به دنبال راهی بودند که این مشکل را حل کنند. برنامه نویسان برای این مشکل راه حل های دیگری هم پیدا کردند. اما داکر از بقیه ابزاری بهتر و استفاده از آن راحت تر هست. داکر به ما کمک می کند تا برنامه های خود را در سیستم های مختلف به اسانی اجرا کنیم.
Docker چیست ؟
داکر، یک پلتفرم نرمافزاری نوین است که به شما این امکان را میدهد تا به سرعت برنامههای خود را توسعه دهید، آزمایش نمایید و آنها را به راحتی پیادهسازی کنید. این پلتفرم نرمافزاری قابلیت بستهبندی نرمافزار را در واحدهای استاندارد به نام کانتینرها دارد. این کانتینرها حاوی تمامی اجزای مورد نیاز برای اجرای یک نرمافزار هستند، از جمله کتابخانهها، ابزارهای سیستمی، کد، و زمان اجرا.
با استفاده از داکر، شما میتوانید به سرعت برنامههای خود را پیادهسازی نمایید و آنها را در هر محیطی اجرا کرده و با تسهیل در مقیاسبندی، به بهینهترین حالت اجرایی برسانید. این امکان به توسعهدهندگان این اطمینان را میدهد که کدهایشان به درستی و به همراه تمامی وابستگیها اجرا خواهند شد.
شرکت Docker Inc. در سال ۲۰۱۳ تأسیس شد و به عنوان حمایتکننده اصلی نسخه متنباز این نرمافزار، نسخه تجاری مدیریت کانتینر را نیز راه اندازی کرد. در نوامبر ۲۰۱۹، Mirantis بخش تجاری Docker Enterprise را به خود اختصاص داد. گزارشهای داکر نشان میدهند که بیش از ۱۳ میلیون توسعهدهنده از این پلتفرم برای توسعه و مدیریت برنامهها استفاده میکنند.
Docker با ماشین های مجازی چه تفاوتی دارد ؟
همانطور که از نامش پیداست، ماشینهای مجازی (VMs) یک ماشین کامل (سرور) را فراهم میکنند. این ماشینهای مجازی سختافزارهای یک ماشین فیزیکی را شبیهسازی میکنند، از جمله پردازنده (CPU)، حافظه، کارت شبکه، کنترلکنندههای USB، و کارتهای صوتی. با استفاده از ماشین مجازی، میتوانید یک سیستم عامل مهمان و همچنین چندین برنامه را در یک محیط مجازی اجرا کنید.
ماشینهای مجازی به دلیل اینکه کل سیستم عامل را نصب میکنند، پرحجمتر هستند و نیاز به تخصیص مقدار زیادی از حافظه دارند. از طرفی، داکر با نصب تنها برنامههای لازم به سیستم، حجم کمتری دارد و به صورت انعطافپذیر به نیازمندیهای حافظه پاسخ میدهد. از آنجا که داکر به اندازه نیاز موارد را دریافت میکند، تعداد بیشتر آز آن را می توان در یک سیستم داشت و راه اندازی و بالا آوردن آن سریع تر هست.
به طور کلی، ماشینهای مجازی زمانی مورد استفاده قرار میگیرند که نیاز به اجرای چند سیستم عامل در یک سیستم وجود دارد. از سوی دیگر، داکر زمانی مفید است که به سرعت و با انعطاف بالا بخواهیم یک محیط ایزوله برای اجرای یک برنامه ایجاد کنیم.
داکر چگونه کار می کند؟
در داکر، هر کانتینر یک برنامه را به همراه تمامی کتابخانهها، فایلهای پیکربندی، وابستگیها، و دیگر اجزا و پارامترهای مورد نیاز برای عملیات را بستهبندی میکند و اجرا میکند. فناوری کانتینر از طریق سیستم عامل در دسترس است، امکان توسعه کانتینرها در سیستمهای مختلف را فراهم میکند، ولی بیشترین تعامل این تکنولوژی با سیستم عامل لینوکس است.
هر کانتینر از سرویسهای یک سیستم عامل استفاده میکند و از ویژگیهای کرنل آن سیستم عامل برای ایزوله کردن پردازشها و مجازیسازی به منظور اجرای چندین کانتینر در یک سیستم عامل استفاده میکند. این امکان به توسعهدهندگان این اجازه را میدهد که برنامهها را در محیطهای ایزوله و مستقل از یکدیگر اجرا کنند. برخلاف ماشینهای مجازی که کل سیستم عامل را نصب میکنند؛ کانتینرها با بهرهگیری از قابلیتهای کرنل سیستم عامل، این امکان را فراهم میکنند که به سرعت و با مصرف منابع کمتر، برنامهها را اجرا کنند.
معماری داکر
داکر از یک معماری کلاینت-سرور بهره میبرد که در آن بخش سرور به Docker daemon معروف است. Docker daemon عبارت است از یک سرویس که با استفاده از دستورات ارسالی از سوی کلاینت، تصاویر داکر را ایجاد و مدیریت مینماید. به طور اصولی، دمون داکر به عنوان نقطه کنترل اصلی برای پیادهسازی داکر شما عمل میکند.
برای ارتباط با Docker daemon، داکر دارای یک رابط کاربری خط فرمان (CLI) است که از طریق آن میتوانید دستورات خود را به سمت API داکر ارسال کرده و با Docker daemon ارتباط برقرار کنید. این رابط کاربری خط فرمان داکر به توسعهدهندگان امکان میدهد با سیستم به صورت فعال و مؤثر تعامل کنند و اقدامات مختلفی از جمله ایجاد، مدیریت، و اجرای کانتینرها را انجام دهند.
on Docker چیست؟