موضوع مقاله: داکر | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # داکر | مقدمه: داکر برنامه‌ای رایانه‌ای و ابزاری است که ایجاد، توسعه و اجرای اپلیکیشن‌ها را با استفاده از کانتینر (container) آسان می‌کند. | ## بخش 1: داکر | کانتینر به توسعه‌دهندگان این امکان را می‌دهد که تمام پیش‌نیازها و نیازمندی‌های اپلیکیشن خود را برای استفاده و اجرا جمع‌آوری کنند؛ مانند کتابخانه‌ها (Libraries) و زیرساخت‌های لازم. می‌توان گفت که داکر به توسعه‌دهندگان این اطمینان را می‌دهد که می‌توانند اپلیکیشن خود را بدون نگرانی از سیستم‌های میزبان برنامه خود در مرحله توسعه و تست و بر روی سیستم‌های مختلف، بدون هیچ‌گونه اشکال و به صورت کاملاً مشابه اجرا کنند و مشکلی از بابت تغییر سیستم‌عامل‌های اجراکننده برنامه خود نخواهند داشت. داکر تا حدی شبیه به ماشین مجازی (Virtual Machine) است با این تفاوت که در ماشین مجازی، قسمتی از سخت‌افزار سیستم به ماشین مجازی اختصاص داده می‌شود و روی آن یک سیستم‌عامل کامل نظیر ویندوز یا لینوکس نصب می‌شود. در واقع می‌توان گفت در ماشین مجازی امکانات سخت‌افزاری سیستم تقسیم می‌شود و بر روی هر قسمت، سیستم‌عامل بخصوصی بالا می‌آید اما در داکر این طور نیست. در داکر امکانات سخت‌افزاری به تناسب نیاز هر کانتینر به صورت موقت اختصاص داده می‌شود و داکر این امکان را فراهم می‌آورد که اپلیکیشن‌ها برای مثال روی کرنل لینوکس اجرا شوند. در این حالت دیگر نیازی به نصب پیش‌نیازها و نیازمندی‌هایی که اپلیکیشن ما می‌خواهد و به طور پیش‌فرض روی سیستم وجود ندارد، نیست. داکر ابزاری است متن‌باز (Open Source) و کدهای آن بر روی گیت‌هاب قرار دارد و هر فرد علاقه‌مند می‌تواند در توسعه آن مشارکت کند. داکر طراحی شده است تا هم به توسعه‌دهندگان نرم‌افزارها سود برساند و هم به مدیران سیستم‌ها. داکر باعث می‌شود که توسعه‌دهندگان تمرکز خود را روی نوشتن کد بگذارند و نگران این نباشند که در نهایت قرار است اپلیکیشن آن‌ها روی چه سیستمی اجرا شود. همچنین به آن‌ها کمک می‌کند که پروژه خود را با استفاده از برنامه‌های از پیش طراحی شده در کانتینرها آغاز کنند که به عنوان بخشی از اپلیکیشن آن‌ها استفاده خواهد شد. در گذشته، زمانی که یک برنامه نوشته می‌شد، برای اجرای آن نیاز به تنظیمات خاصی در هر سیستم یا سرور بود. برای مثال، شما باید اطمینان می‌کردید که هر سیستم دارای کتابخانه‌ها و نرم‌افزارهای مشابه باشد تا برنامه بدون مشکل اجرا شود. این مشکل به ویژه زمانی پیچیده می‌شد که شما باید برنامه خود را روی چندین سرور یا محیط مختلف اجرا می‌کردید. در اینجا، ماشین‌های مجازی یکی از راه‌حل‌های مورد استفاده بودند ماشین‌های مجازی به شما اجازه می‌دهند که سیستم‌عامل جداگانه‌ای را برای هر محیط اجرا کنید. به جای استفاده از ماشین‌های مجازی که سیستم‌عامل جداگانه‌ای برای هر محیط راه‌اندازی می‌کنند، داکر از کانتینرها استفاده می‌کند. | ## بخش 2: داکر | مزایای استفاده از داکر از این قرارند: یکسان بودن محیط‌ها داکر این امکان را فراهم می‌کند که محیط‌های توسعه، تست و تولید کاملاً یکسان باشند. این به این معناست که دیگر لازم نیست نگران اجرای ناهماهنگ برنامه در سرورها یا دستگاه‌های مختلف باشید. افزایش سرعت و کاهش خطاها با استفاده از داکر، دیگر نیازی به تنظیمات پیچیده و پیکربندی محیط‌ها نیست. این باعث می‌شود که زمان توسعه و تست برنامه کاهش پیدا کند و احتمال بروز خطاها به حداقل برسد. مقیاس‌پذیری آسان داکر به شما این امکان را می‌دهد که برنامه‌هایتان را به راحتی در مقیاس بزرگ اجرا کنید. به‌عنوان مثال، اگر شما نیاز به اجرای هزاران کانتینر داشته باشید، داکر این کار را به سرعت و با کارایی بالا انجام می‌دهد. کانتینر (Container) کانتینر، یک واحد استاندارد نرم‌افزار است که کدها و تمام نیازمندی‌های آن را جهت اجرا و توسعه اپلیکیشن‌ها، تجمیع می‌کند و باعث می‌شود که این اجرا به طور سریع و قابل اعتماد انجام شود. کانتینرها، نرم‌افزار را از محیط خودش ایزوله می‌کنند و اطمینان می‌دهند که علی‌رغم تفاوت‌های احتمالی در سیستم‌های میزبان، نرم‌افزار به طرز مشابه و یکسان اجرا خواهد شد. به صورتی که شامل هر آنچه جهت اجرا شدن (مانند کد زمان اجرا، ابزارهای سیستم و تنظیمات سیستم) لازم است و هر آنچه که می‌تواند بر روی یک سرور نصب شود می‌باشد. به طور کلی می‌توان گفت داکر این قابلیت را به ما می‌دهد تا یک اپلیکیشن را در یک محیط ایزوله به نام کانتینر (Container) اجرا کنیم. ایزوله بودن و امنیت کانتینرها باعث می‌شود که بتوانیم تعداد زیادی کانتینر را روی ماشین میزبان اجرا کنیم. این بدان معناست که می‌توان تعداد بیشتری کانتینر را روی یک ماشین نسبت به حالتی که از ماشین مجازی استفاده می‌کنیم اجرا کرد. شما می‌توانید میزان ایزوله بودن کانتینرها را در مواردی مانند دسترسی شبکه‌ای، حافظه مورد استفاده آن‌ها و سیستم‌های پایه‌ای مورد استفاده‌شان تنظیم کنید. یک کانتینر در واقع با Image آن و همهٔ تنظیماتی که در زمان اجرای آن انجام می‌دهید تعریف می‌شود. هنگامی که کانتینر حذف می‌شود، هر تغییر فایلی که در آن به وجود آمده از بین میرود. | ## بخش 3: داکر | این موتور اعمال خود را به عنوان یک اپلیکیشن کلاینت-سرور انجام می‌دهد با: یک سرور که نوعی نرم افزار با مدت زمان اجرای طولانی است که به آن پروسه Daemon گفته می‌شود. تفاوت داکر و ماشین مجازی یک کانتینر به صورت native روی لینوکس اجرا می‌شود و به صورت مشترک با سیستم‌عامل از کرنل استفاده می‌کند. کانتینر یک فرآیند مجزا را اجرا می‌کند و مانند یک فرآیند معمولی حجم کمی از RAM را می‌گیرد. ماشین‌های مجازی مقدار بسیار زیادی سربار نسبت به حجم فرآیند مورد نیاز ما برای سیستم ایجاد می‌کنند. محتوای کامل نحوه نصب در سایت داکر قرار دارد و محتوای این نوشته هم در این لینک است که توصیه می‌شود آن را مطالعه کنید. شما برای اجرای فرمان‌های داکر نیاز دارید تا از دسترسی مدیرسیستم (sudo) استفاده کنید. برای دیدن مراحل بعد از نصب به پیوندی که در ابتدای این بخش قرار داده شد مراجعه کنید. زمانی که شما container مورد نظر خودتان را پیدا کردید قطعا می‌خواهید آن را به دلخواه خود تغییر دهید و نیازمندی‌های اپلیکیشن خود را به آن اضافه کنید. داکرفایل مشخص می‌کند که کانتینر شما چگونه باشد، یعنی از چه Image ای به عنوان پایه استفاده کند و چه تغییراتی روی آن اعمال کند و هنگام اجرا چه دستوراتی را اجرا کند. با ساختن یک Image که تنظیمات شخصی خود را روی آن اعمال می‌کنیم، می‌توانیم هر بار یک کانتینر با تنظیمات شخصی‌سازی‌شده را بدون دوباره‌کاری اجرا کنیم. سپس فقط با استفاده از یک کامند می‌توانید تمام سرویس‌های خود را بر اساس پیکربندی دلخواه خود ایجاد و فعال کنید. محیط اپلیکیشن خود با داکرفایل تعریف کنید که باعث می‌شود در هر سیستم و محیطی خود را از ابتدا بازتولید کند. البته برای دریافت image ها نیازی به ایجاد حساب و داشتن مخزن شخصی نیست ولی برای اصلاح و ارسال فایل، باید حساب ساخت. وقتی گروهی از ماشین‌ها با هم کلاستر می‌شوند شما می‌توانید فرمان‌های داکر را که مورد استفاده شماست همچنان استفاده کنید، اما آن‌ها الان دیگر توسط ماشین‌های کلاستر شما اجرا می‌شوند. این خوشه به شما کمک می‌کند که برنامه‌ها و کانتینرها را به‌طور خودکار و به صورت هماهنگ بین سرورهای مختلف پخش و مدیریت کنید. | ## جمع‌بندی | به طور ساده، Docker Swarm به شما این امکان را می‌دهد که بار کاری یک برنامه را بین چندین سرور تقسیم کنید، و به‌طور اتوماتیک کانتینرها بر روی این سرورها توزیع شود تا برنامه به راحتی مقیاس‌پذیر و کارا باشد.