در این مقاله توضیحاتی در رابطه با اینکه داکر چیست و تفاوت های آن با ماشین مجازی در چیست، توضیحاتی داده خواهد شد.
در توضیح اینکه داکر چیست می توان گفت: Docker یک پروژه منبع باز برای خودکار سازی استقرار برنامه ها به عنوان کانتینرهای قابل حمل و خودکفا است که می توانند روی ابر و یا در محل اجرا شوند. Docker همچنین شرکتی است که این فناوری را با همکاری فروشندگان cloud ،Linux و Windows از جمله مایکروسافت، ترویج و تکامل می بخشد.
در رابطه با انواع نرم افزارهای مجازی سازی در مقالات دیگر ممتاز سرور مطالبی بیان شده است. با مراجعه به لینک داده شده می توانید این مقالات را نیز بخوانید.
کانترنیرهای Docker می توانند در هر جایی، در محل دیتاسنتر مشتری، در ارائه دهنده سرویس خارجی، در ابر و یا در Azure اجرا شوند. کانتینرهای تصویر Docker می توانند به صورت بومی روی Linux و Windows اجرا شوند. با این حال، تصاویر ویندوز فقط می توانند روی هاست های ویندوز اجرا شوند و تصاویر لینوکس می توانند روی هاست های لینوکس و میزبان ویندوز اجرا شوند (با استفاده از Hyper-V Linux VM )، جایی که هاست به معنی سرور یا VM است.
توسعه دهندگان می توانند از محیط های توسعه در ویندوز، لینوکس یا macOS استفاده کنند. در رایانه توسعه، توسعه دهنده Docker host را اجرا می کند که در آن تصاویر Docker، از جمله برنامه و وابستگی های آن مستقر شده است. توسعه دهندگان که بر روی لینوکس یا در macOS کار می کنند از هاست Docker مستقر در لینوکس استفاده می کنند و می توانند فقط برای کانتینرهای لینوکس تصاویر ایجاد کنند. (توسعه دهندگانی که روی macOS کار می کنند می توانند کد را ویرایش کنند یا Docker CLI را از macOS اجرا کنند، اما از زمان نوشتن این مقاله، کانتینرها به طور مستقیم روی macOS اجرا نمی شوند.) توسعه دهندگانی که روی ویندوز کار می کنند می توانند تصاویر را برای کانتینرهای لینوکس یا ویندوز ایجاد کنند.
برای میزبانی کانتینرها در محیط های توسعه و ارائه ابزارهای توسعه دهنده اضافی، داکر (Docker Community Edition (CE را برای Windows یا macOS ارسال می کند. این محصولات، VM (میزبان Docker) لازم را برای میزبانی کانتینر ها نصب می کنند. Docker همچنین (Docker Enterprise Edition (EE را در اختیار شما قرار می دهد، که برای توسعه شرکت طراحی شده است و توسط تیم های IT که در ساخت، حمل و نقل و اجرای برنامه های مهم در تجارت وجود دارد، استفاده می شوند.
برای اجرای Windows Containers، دو نوع اجرا وجود دارد:
Windows Server Container ها، isolation برنامه را از طریق فناوری isolation فرایند و فضای نام فراهم می کنند. یک کانتینر سرور ویندوز یک هسته را با میزبان کانتینر و تمام کانتینرهای در حال اجرا روی میزبان به اشتراک می گذارد.
Hyper-V Container ها با isolation هر کانتینر در یک ماشین مجازی بسیار بهینه، بروی isolation تهیه شده توسط کانتینر ویندوز سرور گسترش می یابند. در این پیکربندی، هسته میزبان کانتینر با Hyper-V Containsers به اشتراک گذاشته نمی شود و این باعث isolation بهتر می شود.
تصاویر مربوط به این کانتینرها به همان روش ایجاد شده و به همان شکل کار می کنند. تفاوت در نحوه ایجاد یک کانتینر، از تصویر است، که یک کانتینر Hyper-V به یک پارامتر اضافی نیاز دارد.
پس از اینکه با مفهوم اینکه داکر چیست آشنا شدید لازم است تا تفاوت کانتینر داکر با ماشین مجازی را نیز توضیح دهیم.
در شکل زیر مقایسه ای بین کانتینر VM و Docker نشان داده شده است. در مقاله دیگر از ممتاز سرور راجع به ماشین مجازی VMware اطلاعاتی را بدست خواهید آورد.
برای VM ها، سه لایه پایه در سرور میزبان وجود دارد، از پایین به بالا: زیرساخت، سیستم عامل هاست و یک Hypervisor و مهمتر از همه این که هر VM دارای سیستم عامل خاص خود و تمام کتابخانه های لازم است. برای داکر، سرور میزبان فقط زیرساخت ها و سیستم عامل ها را دارد و در بالای آن، موتور کانتینر، کانتینر را جدا کرده اما سرویس های پایه را به اشتراک می گذارد.
از آنجا که کانتینرها به منابع بسیار کمتری نیاز دارند (برای مثال، آنها به سیستم عامل کامل احتیاج ندارند)، استقرار آنها آسان است و سریع شروع می شوند. این به شما امکان می دهد چگالی بالاتری داشته باشید، به این معنی که به شما امکان می دهد خدمات بیشتری را در همان واحد سخت افزاری اجرا کنید، در نتیجه هزینه ها کاهش می یابد.
به عنوان یک عارضه جانبی اجرا در همان هسته، نسبت به VM ها isolation کمتری خواهید داشت.
هدف اصلی تصویر این است که محیط (وابستگی ها) را با موضع گیری های مختلف یکسان کند. این بدان معنی است که می توانید مشکلات آن را در در دستگاه خود حل کنید و سپس با همان محیط تضمین شده، آن را در دستگاه دیگری قرار دهید. تصویر کانتینر راهی برای بسته بندی یک برنامه یا سرویس و گسترش آن به روشی مطمئن و قابل تکرار است. می توانید بگویید که داکر نه تنها یک فناوری بلکه یک فلسفه و یک فرایند است.
هنگام استفاده از Docker، توسعه دهندگان نمی گویند، ‘روی دستگاه من کار می کند، چرا در تولید نیست؟’ آنها به سادگی می توانند بگویند، ‘ روی Docker اجرا می شود’، زیرا برنامه بسته بندی شده Docker می تواند در هر محیط پشتیبانی Docker اجرا شود و روشی را که برای همه اهداف گسترش (مانند Dev ،QA، مرحله بندی و تولید) در نظر گرفته شده است، اجرا کند.
شاید یک قیاس ساده بتواند به درک مفهوم اصلی داکر و فهم اینکه داکر چیست کمک کند. بیایید برای لحظه ای به دهه 50 برگردیم. هیچ پردازنده کلمه ای وجود ندارد و از دستگاه های فتوکپی در همه جا استفاده می شود. تصور کنید که شما مسئولیت دارید دسته ای نامه را مطابق نیازی که دارید سریع صادر کنید. برای ارسال آنها به مشتریان، باید از کاغذ و پاکت های نامه واقعی استفاده کنید و به صورت فیزیکی به آدرس هر مشتری تحویل دهید (ارسال با ایمیل ممکن نیست).
در مقطعی متوجه می شوید که حروف فقط ترکیبی از مجموعه بزرگی از پاراگراف ها هستند که مطابق هدف نامه، متناسب با نیاز انتخاب و مرتب می شوند، بنابراین شما سیستمی ابداع می کنید تا سریع نامه ها را صادر کند، در صورتی که انتظار داشتید فرآیند سنگینی باشد.
سیستم ساده است:
بنابراین، ساده سازی، ایده اصلی داکر است.
در داکر، هر لایه مجموعه ای از تغییرات است که پس از اجرای یک دستور مانند نصب یک برنامه، روی سیستم فایل اتفاق می افتد. بنابراین، هنگامی که سیستم فایل را پس از کپی کردن لایه نگاه می کنید، می بینید که تمام پرونده ها، هنگام نصب برنامه، لایه ای را شامل می شوند.
می توانید به تصویر به عنوان یک هارد دیسک کمکی فکر کنید که برای نصب در رایانه ای که سیستم عامل در حال حاضر نصب شده است، در نظر گرفته شده است. به همین ترتیب، شما می توانید یک کانتینر را به عنوان رایانه با دیسک سخت تصویر نصب شده تصور کنید. کانتینر، درست مانند یک کامپیوتر، می تواند روشن یا خاموش شود.
تا اینجا با مفهوم اینکه داکر چیست آشنا شدید. در مقالات بعدی ممتاز سرور اطلاعات تکمیلی از نحوه نصب داکر و دستورات آن خواهید آموخت.