docker چیست | بررسی کاربرد داکر به زبان ساده
Docker یک نرمافزار یا بهتر است بگوییم پلتفرمی باز یا Open Source است که شرایطی را برای توسعه، حملونقل و اجرای برنامهها در یک محیط ایزوله ایجاد میکند. با استفاده از این برنامه کامپیوتری میتوان، محصولات نرمافزاری را از زیرساختها بهسرعت جدا کرد و تحویل مشتری داد. معمولا از برنامه داکر برای توسعه نرمافزارها و Applicationها روی فضاهای ابری و کانتینرها استفاده میشود.
در این مقاله قصد داریم تا به بررسی معماری Docker بهصورت کامل همراه با کاربردهای آن بپردازیم. اگر چیزی از این پلتفرم نمیدانید و یا حتی نام این نرمافزار نیز به گوشتان نخورده است، در ادامه با ما همراه باشید تا درک کاملی از داکر و بخشهای مختلف آن به دست آورید.
داکر چیست؟
تا قبل از این اگر میخواستید یک برنامه وب را اجرا کنید، ابتدا باید یک سرور تهیه میکردید، سپس با نصب سیستمعامل لینوکس (Linux) و اجرای یک پشته LAMP، برنامه را برای راهاندازی آماده میکردید. هنگامی که برنامه با موفقیت توسعه پیدا میکرد و در ترافیک ورودی افزایشی حاصل میشد، در صورت تهیه سروری دیگر، امکان کنترل حجم درخواستها و ترافیک وجود داشت. اما در دنیای اینترنت و ارتباطات امروزی، دیگر راهاندازی و اجرای یک وب اپلیکیشن بهسختی گذشته نیست.
به لطف دو مؤلفه مجازیسازی و سرورهای ابری، میتوان بهراحتی، دانه یک نرمافزار را در محیطی ایزوله و مطمئن کاشت و بعد از توسعه و بزرگ کردن آن، منابع و زیرساختهای موردنیاز را افزایش داد.
مطالعه مقاله رایانش ابری چیست؟ را پیشنهاد می کنیم.
بگذارید بهتر توضیح بدهیم. فرض کنید، میخواهید دانهای بکارید و آن را تبدیل به درخت کنید. اما مکانی برای کاشت دانه ندارید و هنوز گلدانی برای رفع نیاز شما اختراع نشده است! پس تنها چاره کار، خرید یا اجاره یک زمین خالی برای این کار است. درنتیجه برای شروع، باید هزینههایی بهمنظور اجاره یا خرید زمین در نظر بگیرید که یکی از معایب کشاورزی در این حالت تلقی میشود. زیرا افراد زیادی پول کافی برای این کار را ندارند.
حال بعد از گذشت 10 سال اولین گلدان وارد بازار شده است. پس میتوان با هزینه بسیار کم یکی از آنها را تهیه کرد و بعد از رشد کافی دانه، اقدام به بزرگ کردن گلدان و یا حتی خرید زمین کرد. دقیقا اجرای یک برنامه تحت وب نیز تا قبل از مجازیسازی و پیدایش سرویس ابری به این صورت بود. یعنی اگر برنامهنویسی قصد خلق یک WebApplication را داشت، ابتدا باید یک سرور با تمامی منابع را اجاره یا خریداری میکرد.
اما بعد از Virtualization و Cloud Service، حال یک برنامهنویس میتوانست، یک کانتینر (Container) که نشاندهنده همان گلدان است، بر اساس بودجه و نیاز خود تهیه کند و سپس با توسعه نرمافزار، کانتینر را نیز بزرگتر کند. سرویس ابری داکر همراه با ابزارهای مختلف خود اجازه کنترل و مدیریت این کانتینرها (همان گلدانها) را امکانپذیر میسازد. البته گزینههای دیگری نیز بهجای Docker برای این کار مانند CRI-O, Podman, LXC وجود دارند.
برای آشنایی بهتر با مفهوم اصطلاح کانتینر یا ظروف مجازی پیشنهاد میکنیم تا مقاله مربوط به مجازیسازی را مطالعه فرمایید.
کاربرد Docker
آیا بعد از رشد و تکامل برنامه بهاندازه کافی باز نیاز به استفاده از ابزارهای مدیریت و کنترل کانتینرها مانند Docker است؟ باید در پاسخ گفت: بله نیاز است؛ حتی بیشتر از قبل!
در برنامهنویسی و بخصوص توسعه نرمافزارهای تحت وب، همواره نیاز به یک میز کار ایزوله و ایمن برای انجام برخی امور خارج یا مرتبط به شبکه حس میشود. از جمله مهمترین کاربردهای داکر (Docker) عبارتاند از:
۱) رفع ایرادات، توسعه نرمافزار و تحویل آن در سریعترین زمان ممکن و بهصورت پیوسته
با استفاده از داکر و به لطف کانتینرهای مجازی، میتوان بهسرعت برنامهای را بهروزرسانی کرد و با انجام تستهایی در محیط ایزوله، ایرادات و باگهای آن را رفع کرد. همچنین با همکاران مرتبط نیز بهصورت متمرکز همکاری کرد تا سرعت کار افزایش یابد.
برای مثال اگر قصد دارید تا سایت خود را آپدیت کنید، به چه صورت عمل خواهید کرد؟ سایتهای معتبری مانند: دیجیکالا با بازدید روزانه بیش یک میلیون کاربر هرگز بهروزرسانی سایت خود را بهصورت آنلاین انجام نمیدهد. ابتدا یک کپی از سایت را گرفته و سپس با انتقال آن به یک کانتینر مجازی و ایزوله، به لطف ابزارهای Docker، سایت را بهصورت کاملا شبیهسازی شده اجرا میکند.
سپس تیم متخصص با دسترسیهایی که به کانتینر دارند، وارد عمل شده و در سریعترین زمان ممکن، هر نوع نیازی برای بهروزرسانی را اعمال میکنند. بعد از رفع باگها و ایرادات حال در همان محیط ایزوله سایت را چندین بار تست کرده، در نهایت به لطف قابلیتهای Containers و داکر، سایت جدید جایگزین میشود.
۲) استقرار و پیادهسازی آن بدون محدودیت
روی هر دستگاهی میتوان بدون محدودیت، کانتینرهای مجازی شده و مبتنی بر ابزارهای Docker را اجرا کرد. این قابلیت از دیگر ویژگیهای جذاب این پلتفرم برای برنامهنویسان است. زیرا اگر تازهکار و به دنبال آموزش هستید، تنها با virtualization کردن لپتاپ یا کامپیوتر شخصی خود، بدون نیاز به پرداخت هزینه برای اجاره سرویس ابری، میتوانید از توسعه WebApplicationها لذت ببرید.
پس میتوان نتیجه گرفت که استقرار پلتفرمها بر مبنای Docker و مجموعه ابزارهای آن، روی هر نوع سختافزاری امکانپذیر است؛ حتی اگر قدرت پردازشی آن کم باشد یا پای سرورهای ابری متشکل از ارتباط میان دیتا سنترهای بزرگ و متعدد در میان باشد.
۳) اجرای بار کاری زیاد روی همان سختافزار
آخرین ویژگی مهم این سیستم، سبک و سریع بودن آن است. نباید تصور شود که سنگینی این سیستم به اندازه سیستمعامل (مثلا ویندوز) است. این سیستم به فضای ذخیرهسازی و قدرت پردازشی زیادی برای اجرا نیاز نخواهد داشت.
کانتینرهای مجازی در کنار ابزارهای مدیریت و کنترل آن (داکر یا دیگر ابزارهای مرتبط)، برای اجرا در محیطی متراکم و تعداد بالا طراحی شدهاند. یعنی در یک منبع سختافزاری میتوان، تعداد بالایی از این ظروف مجازی را بدون مشکل نصب و اجرا کرد. از این ویژگی برای انجام کارهای سبک ولی متعدد در یک منبع و زیرساخت سختافزاری واحد، بهمنظور کاهش هزینهها استفاده میشود. مانند پیادهسازی عملیات مانیتورینگ، نرمافزارهای امنیتی، کدهای برنامه و… در یک سرور ولی در چند محیط ایزوله.
مقاله مانیتورینگ شبکه چیست؟ را از دست ندهید.
Docker Engine
مهندسی داکر این امکان را میدهد تا بهراحتی برنامهها را توسعه داده، مونتاژ کرده و به هر مکانی ارسال کنید. Docker Engine از سه بخش اصلی تشکیل شده است که قبل از توضیح درباره معماری و ساختار (architecture) آن، بهتر است تا با این سه بخش آشنا شویم.
Docker Daemon: یک فرایند و عملیات دائمی را در پسزمینه اجرا میکند که وظیفه کنترل و مدیریت تصاویر، کانتینرها، شبکهها و فضای ذخیرهسازی را بر عهده دارد. داکر deamon بصورت مداوم در حال گوشدادن به درخواستهای Docker API و اجرای آنها است.
Docker Engine REST API: یک API است که برای ایجاد تعامل با deamon توسط برنامهها استفاده میشود و به این API میتوان با یک client HTTP دسترسی ایجاد کرد.
Docker CLI: یک command line interface client (سرویسگیرنده رابط خط فرمان) برای تعامل با deamon داکر است. این داکر مدیریت containerها را بسیار ساده میکند و از دلایل محبوبیت Docker میان کاربران طلقی میشود.
با این تعاریف باید اضافه کرد که داکر را میتوان روی سیستمعاملهای Mac OS و Windows 10، انواع مختلف سرورهای Linux و Windows Server 2016 یا سرویسهای ابری Amazon Web Services، Microsoft Azure، Google Compute Platform، IBM Cloud و… اجرا نمود.
رایانش مه چیست؟ برای آشنایی بیشتر می توانید مقاله مورد نظر را مطالعه نمایید.
اجزای داکر یا Docker architecture
معماری داکر بهصورت Client – Server (مشتری – سرور) است که در آن Docker client با Docker deamon ارتباط برقرار میکند تا کارهای سنگین ساخت، اجرا و توزیع کانتینرهای داکر، انجام گیرد. هر دو داکر (client و deamon) میتوانند روی یک سیستم اجرا شوند و یا docker client در یک سیستم جداگانه اجرا شده و با اتصال از راه دور با docker deamon ارتباط برقرار کند.
در صورت Remote (از راه دور) بودن اتصال، client و deamon داکر با استفاده از REST API، با بهرهگیری از سوکتهای یونیکس (UNIX sockets) یا یک شبکه اتصالی، باهم ارتباط برقرار میکنند. یکی دیگر از مشتریهای داکر (Docker client)، Docker Compose نام دارد که به شما اجازه میدهد تا با برنامههای تشکیل شده از مجموعه کانتینرها کار کنید. در ادامه اجزای اصلی داکر را معرفی میکنیم.
مشتری داکر یا Docker Client
مشتری داکر به کاربران اجازه میدهد تا با هسته اصلی docker صحبت و دستورات لازم را صادر کنند. همانطور که گفته شد، client و deamon میتوانند روی یک هاست یا سیستم سختافزاری مشترک اجرا شوند و یا از طریق ارتباط راه دور باهم تعامل داشته باشند. همچنین باید اشاره کرد که یک مشتری میتواند با بیش از یک deamon ارتباط داشته باشد. docker client با ارائه یک CLI، کاربر را قادر میسازد تا دستورات مختلفی مانند اجرا یا توقف برنامه برای deamon صادر کند. مانند:
- docker build
- docker pull
- docker run
Docker Host
میزبان داکر یک محیط کامل و ایزوله را برای اجرای تمامی دستورات و عملیاتها فراهم میکند. برای مثال دستورات کشیدن تصویر و خلق یک کانتینر (container) با استفاده از مجموعه عملیاتهایی انجام میگیرد که در محیط هاست داکر میزبانی میشود.
Docker Objects
آبجکتهای اصلی داکر عبارتاند از:
- Images: یک الگوی باینری است که فقط قابلیت خواندن را دارد. این الگو شامل متا دیتاهایی (metadata) برای توصیف نیاز و ویژگیهای کانتینرها است. تصاویر را میتوان میان تیمهای یک پروژه یا حتی برای کل جهان به اشتراک گذاشت.
- Containers: ظروف (containers)، محیطهای محصور شده و ایزولهای هستند که برنامهها در آنها اجرا میشوند. دسترسی منابع کانتینرها توسط تصاویر (Images) کنترل شده و به اتصالات شبکه و گزینههای ذخیرهسازی تعریف میشوند.
- Networking: داکر نتورکینگ نرمافزارها را بهصورت application-driven مدیریت کرده و همچنین برای پیکربندی شبکه، گزینههای متنوعی را برای توسعه دهندگان ارائه میکند. در حالت کلی دو نوع شبکه در معماری داکر برای توسعه دهندگان در نظر گرفته شده است. شبکههای پیشفرض و شبکههای تعریف شده توسط کاربر یا توسعهدهنده.
None، bridge و host سه شبکه پیشفرض در نظر گرفته شده است. البته bridge زیاد موردتوجه دولوپرها نیست زیرا در مواردی محدودیتهایی دارد. شبکههای تعریف شده توسط کاربر نیز شامل: Bridge network، Overlay network و Macvlan network است.
- Storage: میتوان دادهها و اطلاعات را در لایههای قابل نوشتن کانتینرها ذخیره کرد، اما زمانی که یک کانتینر اجرا نشود، دادهها از بین خواهند رفت. ازاینرو نیاز به یک فضای ذخیرهسازی دیگری نیز است که معماری داکر 4 مدل Storage دائمی را ارائه میکند.
- Data Volumes: توانایی ایجاد یک فضای ذخیرهسازی دائمی در خارج از کانتینرها و روی سیستم میزبان را ارائه میکند.
- Data Volume Container: یک Storage در یک Container جدا و مستقل ایجاد میکند که میتوان این ظرف مخصوص برای ذخیره دادهها را با کانتینرهای دیگر به اشتراک گذاشت.
- Directory Mounts: گزینه دیگری که دولوپرها برای ذخیرهسازی دادهها و اطلاعات خود میتوانند استفاده کنند، Directory Mounts است که یک دایرکتوری محلی در هاست و کانتینر قرار میدهد.
- Storage Plugins: اما بهترین گزینه و همچنین راحتترین روش برای ذخیرهسازی DATA استفاده از اتصالات Storage و بخصوص نوع ابری آن است. در این روش با استفاده از افزونههای خاصی امکان اتصال میان کانتینر و پلتفرمهای ذخیرهسازی خارجی فراهم میشود. انواع مختلفی از Storage Plugins عبارتاند از: HPE 3PAR، EMC (ScaleIO, XtremIO, VMAX, Isilon)، NetApp و نوع ابری آنها عبارتاند از: Azure File Storage و Google Compute Platform.
Docker Registries
رجیستریهای داکر مکانهایی است که کاربران و توسعه دهندگان میتوانند از آنجا تصاویر (images) را ذخیره و دانلود کنند. به تعبیری دیگر Docker registries مانند یک فروشگاه حاوی تصاویر هستند که نوع عمومی آنها Docker Hub و Docker Cloud است. همچنین انواع خصوصی آن نیز وجود دارد؛ رایجترین دستورات برای رجیستری داکر عبارتاند از:
- docker push
- docker pull
- docker run
مطالعه مقاله انواع سرویسهای رایانش ابری از دست ندهید.
تاریخچه مختصری از Docker
داکر اولین بار در مارس ۲۰۱۳ بهعنوان یک پروژه متنباز (Open Source) در PyCon معرفی شد. البته قبل از تمرکز روی کانتینرها، این پروژه در سال ۲۰۰۸ بهعنوان یک پلتفرم سرویس (PaaS) به نام DotCloud کلید خورد و توجه بسیاری از توسعهدهندگان به فناوری زیربنایی آن جلب شد. از آن زمان به بعد داکر، مورد توجه بسیاری از ارائهدهندگان خدمات فناوری و شرکتهای مطرح دنیا قرار گرفت.
چه زمانی از Docker استفاده کنیم؟
از کانتینرهای داکر میتوان بهعنوان یک بلوک اصلی برای ایجاد برنامهها و پلتفرمهای مدرن استفاده کرد. این تکنولوژی ساخت و اجرای میکروسرویسهای توزیع شده، استقرار کد با ادغام و تحویل مداوم، ایجاد سیستمهای مقیاسپذیر برای پردازش داده و راهاندازی پلتفرمهای مدیریتی برای توسعهدهندگان را آسانتر میکند. در ادامه نگاهی مجزا به هر یک از اینها خواهیم داشت:
- میکروسرویسها: میتوانید با استقرار کدهای استاندارد کانتینرهای Docker، معماریهای کاربردی توزیع شده بسازید و آنها را مقیاسبندی کنید.
- ادغام و تحویل مداوم: میتوانید با استانداردسازی محیطها و حذف هرگونه تضادی میان پشتههای زبان و نسخههای مختلف، تحویل برنامه را سرعت ببخشید.
- پردازش دادهها: میتوانید بهعنوان یک سرویس امکان پردازش بیگ دیتا را فراهم کنید. دادهها و بستههای تحلیلی را در کانتینرهای قابل حمل بستهبندی کنید تا هر کاربر با حداقل دانش فنی قادر به اجرای آنها باشد.
- کانتینر بهعنوان سرویس: میتوانید برنامههای کاربردی بسازید که محتوا و زیرساخت آن توسط تیم فناوری اطلاعات مدیریت شده و امن باشد.
مهمترین مزیتهای Docker چیست؟
استفاده از Docker به شما امکاناتی نظیر: ارسال سریعتر کدها، استانداردسازی عملیات برنامه، جابهجایی یکپارچه کدها را میدهد و کمک میکند تا با بهبود استفاده از منابع، هزینهها را تا حد امکان بهبود ببخشید. داکر شئ واحدی در اختیارتان میگذارد که هرجایی قابل اجرا بوده و تحت کنترل شما است. از طرفی اکوسیستم قوی تشکیل شده از ابزارها و برنامههای کاربردی که سازگار با داکر طراحی شدهاند، محبوبیت این پلتفرم را از همیشه بیشتر کردهاند.
- حمل نرمافزارهای بیشتر: کاربران Docker به طور متوسط 7 برابر بیشتر از کاربران دیگر اقدام به حمل نرمافزار میکنند چون داکر این امکان را در اختیار آنان میگذارد.
- استانداردسازی عملیات: عملیات استقرار، شناسایی مشکلات و بازگشت به عقب برای اصلاح مشکلات در برنامههای کوچک کانتینری آسانتر است. از آنجایی که کانتینرها سیستم عامل را مجازی میکنند، هنگام راهاندازی سیستم خبری از نمونههای کانتینر نیست. بنابراین کل فرایند استقرار در عرض چند ثانیه انجام میشود. حتی میتوان کانتینرهای موجود را برای ایجاد برنامهها به اشتراک گذاشت.
- سیستم یکپارچه و باثبات: برنامههای مبتنی بر داکر میتوانند بهطور یکپارچه از ماشینهای توسعه محلی به AWS منتقل شوند. قبلا هم اشاره کردیم که با داکر برنامهها روی محیط کاملا مشابه اجرا میشوند و توسعهدهندگانی که روی ماشینها و سیستمعاملهای مختلف کار میکنند، همگی میتوانند بدون مشکلات محیطی روی یک برنامه با هم کار کنند.
- کاهش هزینهها: یکی از کاربردهای مهم کانتینرهای Docker این است که اجرای کدهای بیشتر روی سرور را آسانتر میکنند. به این ترتیب با بهبود کاربری، تا حد خوبی در هزینهها صرفهجویی میشود. از طرفی از آنجا که کانتینرها سیستم عامل مهمان ندارند، بسیار سبکتر و کوچکتر از ماشینهای مجازی هستند و به لطف حجم دادهها و تصاویر، حافظه کمتری را اشغال میکنند. بهعلاوه به سرورهای فیزیکی بزرگ نیازی ندارند چون امکان اجرای آنها روی ابر وجود دارد.
- اتوماسیون: این پلتفرم به شما کمک میکند تا کارهای خستهکننده و تکراری را بصورت خودکار انجام داده و بدون کوچکترین مداخله دستی، برای انجام کارهایتان برنامهریزی کنید.
- پشتیبانی از CI/CD: یکی از مزیتهای داکر این است که با روشهای CI/CD به خوبی کار میکند، چون استقرار را سرعت میبخشد، بهروزرسانیها را ساده میکند و به هم تیمیها اجازه میدهد به طور موثر با هم کار کنند.
- بازگشت به عقب و کنترل نسخه ایمیج: یک کانتینر بر اساس یک ایمیج داکر طراحی میشود و ممکن است چندین لایه داشته باشد که هر یک نشان دهنده تغییرات و بهروزرسانیها در پایه است. این ویژگی نه تنها روند ساخت را سرعت می بخشد، بلکه کنترل نسخه را روی کانتینر نیز فراهم میکند. این به توسعهدهندگان اجازه میدهد در صورت نیاز به نسخه قبلی برگردند.
- مدولار بودن: کانتینرها محیطهای مجازی مستقل و ایزوله هستند که عملکردهای مشخصی دارند. با امکان جداسازی اپلیکیشنها، توسعهدهندگان میتوانند بدون نیاز به حذف کل برنامه روی بخش خاصی از آن کار کنند.
edge computing چیست؟ برای اطلاعات بیشتر پیشنهاد می دهیم مقاله مورد نظر را مطالعه نمایید.
مهمترین معایب Docker چیست؟
یکی از ایرادات داکر نداشتن رابط گرافیکی است. اگر قصد دارید برنامههایی اجرا کنید که به رابط گرافیکی نیاز دارند، داکر انتخاب خوبی برای شما نخواهد بود. چون عملا برای میزبانی برنامههایی کاربرد دارد که روی خط فرمان اجرا میشوند.
ایراد مهم و انکارنشدنی دیگر Docker مشکلات امنیتی است. اگرچه این پلتفرم تلاش میکند با جداسازی محتویات از میزبان، امنیت را تا حد خوبی تامین کند، خطرات امنیتی قابل توجهی دارد که باید در نظر گرفته شوند. البته در ادامه مقاله مفصل در مورد امنیت داکر صحبت میکنیم. اما انتظار میروند به عنوان یک کاربر آگاه با بهترین شیوههای امنیتی که از حملات و نقض امتیازات جلوگیری میکنند، آشنا باشید.
یک عیب کوچک دیگر دشوار بودن یادگیری این پلتفرم است. حتی توسعهدهندگانی که تجربه کار با زیرساختهای VM را داشتهاند، مدتی طول میکشد تا مفاهیم داکر و نحوه عملکرد هریک از آنها را درک کنند.
تفاوت بین Docker و ماشین مجازی چیست؟
ماشینهای مجازی (VM) سختافزار سرور را مجازی میکنند (یا نیاز به مدیریت مستقیم) را از میان برمیدارند؛ در حالی که کانتینرها سیستم عامل یک سرور را مجازی میکنند. میتوان گفت Docker یک سیستم عامل برای کانتینرها است. Docker Engine به راحتی روی هر سروری که بخواهید کانتینرها را اجرا کنید، نصب میشود و دستورات سادهای ارائه میکند که برای ساخت، راهاندازی یا توقف کانتینرها مورد استفاده قرار میگیرند.
پلتفرم Docker چقدر امنیت دارد؟
یکی از مشکلاتی که همیشه در مورد کانتینرها و البته داکر وجود دارد، بحث چالش برانگیز امنیت است. کانتینرها با وجود انزوای منطقی فوقالعادهای که دارند، از سیستمعامل میزبان مشترک استفاده میکنند. این یعنی کوچکترین حمله یا نقصی در سیستمعامل زیربنایی، میتواند بهطور بالقوه تمام کانتینرهایی که روی سیستم عامل اجرا میشوند را به خطر بیاندازد. آسیبپذیری این پلتفرم را میتوان به دسترسی و مجوز، تصاویر کانتینر و ترافیک شبکه در بین کانتینرها دستهبندی کرد.
در راستای حل این مسائل، تیم داکر بهطور مرتب پیشرفتهای امنیتی مثل: اسکن تصاویر، معرفی گرههای امن، هویت گره رمزنگاری، تقسیمبندی خوشهای و توزیع مخفی امن را برای این پلتفرم در نظر میگیرند. بهعلاوه مدیریت اسرار داکر در کوبرنتیز (Kubernetes) و همچنین D2iQ، CISOfy Lynis و HashiCorp Vault نیز وجود دارد. شمار زیادی از ابزارهای مختلف اسکن امنیتی کانتینر از Aqua، Twistlock، NeuVector و غیره معرفی و روانه بازار شدهاند.
برخی از سازمانها کانتینرها را روی یک VM اجرا میکنند. نه اینکه کانتینرها به ماشینهای مجازی نیاز داشته باشند، نه! اما همین کار نقص امنیتی داکر را تا حدودی پوشش میدهد. یک جایگزین دیگر، استفاده از ماشینهای مجازی میکرو است که به اندازه یک ماشین مجازی معمولی سربار ندارند و از نمونه آنها میتوان به gVisor، Kata Containers و Amazon Firecracker اشاره کرد. مهمتر از همه، رایجترین و توصیهشدهترین مرحله برای اطمینان از امنیت کانتینر این است که هاست کانتینر را در معرض اینترنت قرار ندهید و فقط از تصاویر کانتینر منابع شناختهشده استفاده کنید.
تفاوت Docker و Kubernetes چیست؟
واقعیت ماجرا این است که کانتینرهای لینوکس از سال 2008 وجود داشتند؛ اما تا زمان ظهور کانتینرهای داکر در سال ۲۰۱۳ چندان شناختهشده نبودند. با افزایش تعداد برنامههای کانتینریشده به صدها کانتینر مستقر روی چندین سرور، کارکرد این پلتفرمها پیچیدهتر شد و این پرسش در ذهن کاربران شکل گرفت که “چطور باید صدها کانتینر را هماهنگ، مقیاسبندی، مدیریت و برنامهریزی کرد؟” کوبرنتز (Kubernetes) در پاسخ به این پرسش معرفی شد.
کوبرنتز یک سیستم ارکستراسیون متنباز است که امکان اجرای کانتینرهای داکر و بار کاری را فراهم میکند. به این ترتیب کاربران میتوانند پیچیدگیهای عملیاتی کانتینرهای مستقر در چندین سرور را مدیریت کنند. از طرفی کوبرنتز چرخه حیات کانتینر را هماهنگ کرده و کانتینرهای برنامه را روی زیرساخت هاست توزیع میکند. میتواند خیلی سریع منابع را حسب تقاضا افزایش یا کاهش دهد و همواره وظیفه تهیه، برنامهریزی، حذف و نظارت بر کانتینرها را بر عهده میگیرد.
مقاله kubernetes چیست؟ | ویژگیها + تفاوت با داکر را نیز مطالعه کنید.
جمعبندی
کانتینرها بستر مناسبی برای شروع خلق یک برنامه و سپس توسعه آن به وجود آوردهاند. تا قبل از این اگر میخواستید یک WebApplication درست کنید؛ ابتدا باید یک سرور اجاره میکردید که در ابتدا هزینههای زیادی برای دولوپرها به همراه میآورد و همچنین افراد تازهکار و بهاصطلاح Beginner را دلسرد میکرد. اما امروزه به لطف مجازیسازی، دیگر نیازی به اجاره یک سرور نیست و برای شروع میتوان با ساخت یک کانتینر محلی حتی روی لپتاپ نیز شروع کرد. همچنین برخی سرویسهای ابری تا یک سال برای افرادی که ثبتنام میکنند، خدمات رایگان ارائه میدهند.
در این مقاله سعی کردیم تا به بررسی دقیق و کامل داکر (docker) که نوعی پلتفرم باز یا Open Source برای کنترل و مدیریت کانتینرها است، بپردازیم. امیدواریم این مقاله برای شما مفید بوده باشد.
سوالات متداول داکر
بله، قابلیت اجرای کانتینرهای برنامه داکر بر روی همه سیستم عامل های اشاره شده وجود دارد.
به طور پیش فرض، Docker Desktop در مکان های زیر نصب می شود:
در مک: /Applications/Docker.app
در ویندوز : C:\Program Files\Docker\Docker
در لینوکس: /opt/docker-desktop
آیا برای استفاده از Docker Desktop نیاز به پرداخت هزینه است؟
استفاده از برنامه دسکتاپ داکر برای کاربری های شخصی، آموزشی و پژوهشی و کسب و کارهای کوچک در حد کمتر از ۲۵۰ کارمند، به صورت رایگان انجام می گیرد. برای کسب و کارهای بزرگتر از حد تعریف شده نیاز به تهیه اشتراک پولی است.
بله، می توانید از Docker Desktop به صورت آفلاین استفاده کنید. با این حال، نمی توانید به ویژگی هایی که نیاز به اتصال اینترنتی فعال دارند دسترسی پیدا کنید.
مک، لینوکس و ویندوز دارای آدرس IP متغیر هستند. در مک و ویندوز، توصیه می کنیم به نام DNS ویژه host.docker.internal متصل شوید که به آدرس IP داخلی استفاده شده توسط هاست وارد می شود.
متأسفانه، امکان ورود از طریق یک دستگاه USB (یا یک پورت سریال) به یک کانتینر وجود ندارد. زیرا نیاز به پشتیبانی در سطح Hypervisor دارد.
دیدگاهتان را بنویسید