داکر چیست؟ | راهنمای جامع و کامل Docker + انواع، کاربردها و مزایا به زبان ساده
داکر چیست و چه کاربردی دارد؟
داکر یک برنامه نرم افزاری کاربردی است. تصور کنید یک برنامه نرم افزاری که نوشتهاید را روی کامپیوتر دیگری اجرا کنید، اما عدم تطابق دو سیستم کامپیوتری باعث میشود که برنامههایی که روی یک سیستم کامپیوتری نوشته میشوند، روی محیط دیگر قابل اجرا نباشند. برای حل این مشکل، فناوری به نام Docker ارائه شده است. داکر کمکتان میکند تا کدهایتان را روی هر سیستمی بدون خطا اجرا کنید. برای این کار فقط باید برنامهای که نوشتهاید را داخل یک کانتینر قرار دهید. سپس داکر را روی سیستم مقابل نصب کرده و برنامه را اجرا کنید. در این مطلب ابرآراز درباره تکنولوژی داکر و کاربردها و امنیت آن، هر آنچه لازم است بدانید را ارائه کردهایم.
Container چیست؟
برای آشنایی با داکر، باید ابتدا درباره کانتینرها شناخت پیدا کنید. کانتینر شبیه یک طرف یا بسته است که تمامی فایلهای اجرایی، کدهای باینری، کتابخانهها و فایلهای پیکربندی لازم برای اجرای برنامه در داخل آن قرار میگیرند. برخلاف رویکردهای مجازیسازی و استفاده از ماشینهای مجازی، کانتینرها حاوی تصاویر یا image سیستمعامل نیستند. به همین دلیل، این برنامهها سبکتر و قابل حملتر بوده و هزینه سربار کمتری دارند. در نتیجه، برنامههای داکر سرعت اجرای بالاتری دارند و منابع کمتری مصرف میکنند.
داکر چیست؟
داکر یک پلتفرم نرمافزاری است که به توسعهدهندگان کمک میکند تا برنامههای خودشان را در کمترین زمان ساخته و اجرا کنند. این نرمافزار دارای واحدهای استانداردی به نام کانتینر است که هرآنچه نرمافزار برای اجرا نیاز دارد، در آنها تعبیه شده است. ازجمله موارد موجود در کانتینرهای داکر میتوان به کتابخانهها، ابزارهای سیستم، کد و دستورالعملهای اجرای برنامه اشاره کرد. پس از آشنایی با داکر، با کمک این نرم افزار میتوانید در کمترین زمان برنامههایتان را در هر محیطی نصب کرده و کدهایتان را به آسانی و بدون مشکل اجرا کنید.
کانتینر داکر چیست؟
Docker container یک تصویر آماده اجرا (runtime instance of an image) است. این فناوری به توسعهدهندگان این امکان را میدهد که بخشهای مدنظرشان مانند کدها و کتابخانههای برنامه و تنظیمات را در کانتینر بستهبندی کرده و یک نسخه آماده اجرا از فایل داکر برنامه داشته باشند؛ یعنی هر کانتینر داکر، یک نسخه آماده اجرایی از یک تصویر داکر است که میتواند بهصورت ایزوله اجرا شود. هرآنچه برای اجرای برنامه لازم است، در این فایل گنجانده شده تا بهصورت مستقل و بدون تداخل با برنامههای دیگر، قابل اجرا باشد.
به عنوان مثال، تصور کنید که تصویر داکر آماده شده حاوی یک سیستمعامل اوبونتو و NGINX SERVER است. با کمک دستور docker run میتوانید این تصویر را اجرا کرده و یک کانتینر جدید بسازید. در این کانتینر، یک نسخه مستقل اوبونتو به همراه NGINX SERVER قرار دارد که میتواند بهصورت مستقل از برنامههای دیگر اجرا شود؛ بنابراین، نیازی نیست که مجدداً این نرمافزارها را برای استفاده از برنامه روی سیستم خودتان نصب کنید.
برای ساخت کانتینرهای داکر، به سه نوع نرمافزار نیاز داریم. این نرم افزارها عبارتاند از:
- نرمافزارهای سازنده (Builder): این تکنولوژیها برای ساخت و ایجاد کانتینرها استفاده میشوند.
- نرمافزارهای مهندسی (Engine): این نرمافزارها برای راهاندازی و اجرای کانتینرها به کار میروند.
- نرمافزارهای تنظیم و هماهنگی (Orchestration): این نرمافزارها برای مدیریت و هماهنگسازی کانتینرهای مختلف درنظر گرفته میشوند.
نکته مهم: کانتیرهای داکر پس از هربار اجرا شدن و مردن، دوباره زنده میشوند و میتوان بارها و بارها از این بستهها برای اجرای برنامه استفاده کرد، بدون اینکه دچار مشکل فنی شوند یا برای سرور مشکلی ایجاد کنند.
انواع Docker کدامند؟
هرکدام از نسخههای داکر، ویژگیهای خاصی دارند و برای کاربردهای متفاوتی استفاده میشوند. ازجمله رایجترین انواع داکر که بیشترین استفاده را در شرکتهای نرمافزاری دارند، میتوان به موارد زیر اشاره کرد:
نوع داکر | شرح قابلیت | ویژگیها و کاربردها |
Docker Engine | هسته اصلی داکر و مسئول ایجاد و اجرای کانتینرها است. این نوع بیشتر برای محیطهای توسعه و تولید برنامهها استفاده میشود. | اجرای کانتینرها، مدیریت منابع، سازگاری با سیستمهای مختلف. |
Docker Desktop | نسخهای برای ویندوز و مک بوده و دارای Docker Engine و Docker Compose و رابط گرافیکی مناسب برای مدیریت کانتینرها است. | مناسب برای استفاده در محیطهای توسعه و تست، امکان دسترسی راحت به ابزارهای داکر |
Docker Compose | ابزاری که به کاربران امکان این را میدهد تا چندین کانتینر را بهصورت یکپارچه و با استفاده از یک فایل YAML تعریف کنند. | مناسب برای مدیریت اپلیکیشنهای چند کانتینری، مناسب برای بهینهسازی فرآیند توسعه نرمافزار. |
Docker Swarm | دارای سیستم مدیریت ارکستراسیون داکر که برای مدیریت کانتینرها در مقیاس بزرگ روی چندین سرور استفاده میشود. | دارای امکان مدیریت مقیاسپذیر برنامهها |
Docker Kubernetes | پشتیبانی از Kubernetes برای مدیریت و ارکستراسیون کانتینرها در مقیاس بزرگ و پیچیده. | مدیریت پیچیده کانتینرها در مقیاس بزرگ، استقرار و مقیاسپذیری سادهتر |
Docker Hub | رجیستری عمومی برای ذخیرهسازی و بهاشتراکگذاری تصاویر داکر که توسط این نرمافزار توسعه داده شده است. | بهاشتراکگذاری تصاویر عمومی، دسترسی به مجموعهای از تصاویر در داکر. |
Docker Registry | محلی برای ذخیره و مدیریت تصاویر داکر بهصورت خصوصی | ذخیره تصاویر خصوصی داخل شبکه و کنترل دسترسی به تصاویر. |
داکر چطور کار می کند؟
Docker از یک معماری کلاینت – سرور استفاده میکند. در این نرمافزار کلاینت (مشتری) و دایمون (سرور) با یکدیگر همکاری کامل دارند تا فرآیندهای مربوط به کانتینرها را به بهترین نحو مدیریت کنند. نحوه عملکرد این بخشها بهصورت زیر است:
Docker Client (کلاینت داکر)
کلاینت ابزاری است که کمکتان میکند تا ازطریق خط فرمان یا ابزارهای دیگر، با Docker Daemon ارتباط برقرار کنید. درواقع با کمک کلاینت میتوانید دستوراتی مانند ساخت، اجرا و متوقف کردن کانتینرها را نوشته و آنها را برای دایمون ارسال کنید.
Docker Daemon (دایمون داکر)
دایمون یک background process است که مدیریت کانتینرها و تصاویر داکر را برعهده دارد. این قسمت، دستورات کلاینتها را دریافت کرده و آنها را اجرا میکند. ازجمله فرمانهای اجرا شده توسط این بخش، میتوان به ساخت تصاویر از فایلهای Dockerfile اشاره کرد.
نحوه ارتباط کلاینت و دایمون
کلاینت و دایمون ازطریق API های RESTful باهم ارتباط برقرار میکنند. رابطی که برای این API ها درنظر گرفته شده، رابط اجرای دستورات ارسالی کاربران و اجرای آنها توسط دایمون است.
بهعنوان مثال، وقتی شما با دستور docker run یک کانتینر اجرا میکنید، کلاینت درخواست را به دایمون ارسال میکند. سپس دایمون یک تصویر مناسب پیدا کرده یا آن را از Docker Hub دریافت میکند. در قدم بعدی، کانتینر توسط دایمون ایجاد شده و اجرا میشود. سپس پاسخ عملیات تولید شده و برای کلاینت ارسال خواهد شد. این فرآیند بدون دخالت کاربران و بهصورت ساده و خودکار انجام میشود.
مقایسه داکر با ماشین مجازی
Docker و ماشینهای مجازی (VMs) دو فناوری کلیدی برای استقرار برنامههای نرمافزاری محسوب میشوند و در چرخه عمر توسعه نرمافزار نقش مهمی ایفا میکنند. جالب است بدانید که کانتینرهای Docker میتوانند روی ماشینهای مجازی هم اجرا شوند. بنابراین، با ترکیب این دو فناوری میتوانید مدیریت بهتری روی تولید و اجرای برنامههایتان داشته باشید. در جدول زیر، ویژگیهای داکر و ماشین مجازی را برای شناخت بیشتر مقایسه کردهایم.
ویژگی | کانتینر داکر | ماشین مجازی (VM) |
تعریف | پلتفرمی برای ایجاد و اجرای کانتینرهای داکر و شبیهسازی فضای کاربر سیستمعامل | شبیهسازی یک ماشین فیزیکی و دارای سختافزار و سیستمعامل مجازی |
مجازیسازی | جداسازی جزئیات سیستمعامل از کد برنامه | جداسازی جزئیات سختافزار از کد برنامه |
هدف | انتزاع سختافزار و افزایش بهرهوری منابع | ایجاد محیط پایدار و قابل مدیریت برای اجرای برنامههای نرمافزاری |
مدیریتشده توسط | دارای Docker Engine برای ایجاد هماهنگی بین سیستمعامل میزبان و کانتینرها | دارای Hypervisor برای ایجاد هماهنگی بین سختافزار فیزیکی و VM ها |
معماری | اشتراک منابع با هسته سیستمعامل میزبان | هر VM دارای هسته و سیستمعامل اختصاصی خود است. |
اشتراک منابع | انعطافپذیری بالا و تخصیص منابع براساس تقاضا | ازپیش تعیینشده و مطابق پیکربندی تصویر VM |
مهم ترین کاربردهای داکر چیست؟
برای بررسی کاربرد داکر در برنامه نویسی، لازم است کاربردهای این برنامه را نیز بشناسید. با کمک داکر میتوانید تمام برنامههای نرمافزاری مدنظرتان را بهصورت ایزوله و بدون تداخل با سایر برنامهها در محیطهای مختلف اجرا کنید. بنابراین، نگرانی از بابت تفاوت زیرساختهای محل توسعه کد و محل اجرای آن نخواهید داشت. با وجود اینکه داکر یک برنامه حرفهای برای توسعه نرمافزار، توسعه، تست و استقرار آن محسوب میشود؛ اما برخی از کاربردهای این برنامه نسبت به سایر موارد پررنگتر است. ازجمله مهمترین کاربردهای داکر، میتوان به موارد زیر اشاره کرد:
تحویل سریع و مداوم برنامه ها
کانتینرهای داکر ایزولهشده هستند و بهصورت مجزا عمل میکنند. درنتیجه، توسعهدهندگان بهراحتی میتوانند کدهایی که نوشتهاند را روی زیرساختهای مختلف تست و اجرا کنند. این موضوع، سرعت توسعه و تحویل نرمافزار را تا حد قابل توجهی افزایش میدهد.
استقرار و مقیاس بندی پاسخگو
داکر امکان مقیاسبندی و استقرار آسان برنامههای نرمافزاری را در محیطهای مختلف، مانند محیطهای ابری یا محلی، فراهم میکند. با توجه به سبک و قابل حمل بودن کانتینرهای داکر، با استفاده از این روش میتوانید بار کاری سیستم را کاهش داده و استقرار نرمافزار را به آسانی انجام دهید.
اجرای کارهای بیشتر با منابع کمتر
برنامه داکر و کانتینرهای آن بسیار سبک و سریع هستند. به همین دلیل است که استفاده از داکر نسبت به ماشینهای مجازی و سایر برنامههای توسعه و استقرار نرمافزار، مقرونبهصرفهتر است؛ چون با کمک داکر میتوانید از ظرفیت منابع سرور بهصورت بهینه استفاده کرده و عملیات مختلف را با کمترین منابع و حداکثر کارایی انجام دهید.
امنیت داکر چقدر است؟
یکی از مسائل مهمی که به پیرامون داکر در برنامهنویسی مطرح میشود، امنیت این نرمافزار است. برای اینکه داکر امنیت بالایی داشته باشد و بدون مشکل برنامههای مدنظرتان را با آن توسعه دهید، لازم است موارد زیر را مدنظر داشته باشید.
- همیشه داکر را بهروز نگه دارید تا از آخرین اصلاحات امنیتی و پچها مطلع شده و جلوی حملات و آسیبپذیریهای امنیتی را بگیرید.
- دسترسی روت کانتینرهای داکر را در اختیار افراد دیگر قرار ندهید.
- حتماً Docker Content Trust را فعال کنید تا تصاویر قبل از اجرا یا بارگیری تأیید شوند و تصاویر مخرب روی سیستم بارگذاری نشود.
- ارتباطات و ترافیک بین کانتیرهای داکر را محدود کنید تا در محیطی کاملاً ایزوله و جدا ازهم اجرا شوند.
معماری داکر چیست؟
معماری داکر شامل مجموعهای اجزای مرتبط و هماهنگ است که باهم تعامل دارند و استقرار، مدیریت و اجرای کانتینرها را تسهیل میکنند. این معماری شامل Docker Daemon ،Docker CLI ،Docker Registry و اشیای داکر است. هرکدام از این بخشها، نقش کلیدی خاص خودشان را در پلتفرم داکر ایفا میکنند. عملکرد این بخشها بهطور کلی بهصورت زیر است:
موتور داکر (Docker Engine)
موتور داکر هسته اصلی این پلتفرم است و شامل دو بخش کلاینت داکر و دایمون داکر است. دیمون داکر روی ماشین میزبان اجرا شده و وظیفه مدیریت اجزای مختلف Docker شامل تصاویر، کانتینرها، شبکهها و حجمها را برعهده دارد. کلاینت نیز ازطریق رابط خط فرمان (CLI)، امکان برقراری ارتباط کاربران با دیمون را برای اجرای دستورات آنها فراهم میکند.
تصاویر داکر (Docker Images)
تصاویر Docker پایه و اساس ساخت کانتینرهای این نرمافزار هستند. این تصاویر فقط خواندنی بوده و شامل کد برنامه، زمان اجرا و کتابخانههای آن هستند. تصاویر Docker ازطریق Dockerfile ساخته میشود.
کانتینرهای Docker
کانتینرها بخشهای ازهم مجزایی هستند که دادههای مربوط به برنامههای نرمافزاری در آنها نگهداری میشود. این بخشها ازهم جدا بوده و بهصورت ایزوله اجرا، متوقف، منتقل و حذف میشوند.
رجیستری داکر (Docker Registry)
رجیستری بخش مرکزی داکر است و برای ذخیرهکردن و به اشتراکگذاری تصاویر داکر استفاده میشود. رجیستری Docker به دو صورت Docker Hub یا رجیستری عمومی و رجیستری خصوصی در دسترس است. در رجیستری عمومی تصاویر عمومی نگهداری میشود؛ در صورتی که رجیستری محل امنی برای نگهداری سایر تصاویر مهم محسوب میشود.
داکر کامپوزر (Docker Compose)
این ابزار برای تعریف و اجرای برنامههای چند کانتینری استفاده میشود. Docker Compose دارای یک فایل YAML به نام docker-compose.yml است. در این فایل، مشخصات سرویسها، حجم آنها و شبکههای سیستم تعریف میشود. در نتیجه مدیریت برنامههای پیچیده که چندین کانتینر دارند، با کمک داکر سادهتر خواهد شد.
حجم های داکر (Docker Volumes)
حجمها در داکر برای مدیریت دادههایی تعریف شدهاند که لازم است خارج از چرخه عمر کانتینرها ذخیره شود. با کمک این قابلیت، دادهها حتی بعد از حذفشدن یا بازسازی کانتینرها، همچنان در دسترس خواهند بود.
شبکه داکر (Docker Networking)
داکر امکانات پیشرفتهای برای اتصال کانتینرها بههم و شبکههای خارجی هم دارد. با کمک شبکههای نرمافزاری تعریفشده (SDN) میتوانید در داکر، شبکههای مجازی مختلف را برای ایزولهسازی کانتینرها تعریف کنید. همچنین با ایجاد شبکههای سفارشی، فرصت این را دارید که کانتینرها را به شبکههای مختلف متصل کرده و تنظیما را با دستورات Docker یا با کمک فایلهای Compose پیکربندی کنید.
معرفی کاربردی ترین ابزارهای داکر
ابزارهای مختلفی برای مدیریت، خودکارسازی و استفاده بهینه از قابلیتهای داکر در دسترس هستند. با کمک این ابزارها میتوانید مدیریت، پیکربندی، ساخت و استقرار برنامههای نرمافزاری را با داکر به بهترین نحو انجام دهید. ازجمله ابزارهای پرطرفدار داکر میتوان به موارد زیر اشاره کرد.
ابزارهای ساخت (Build Tools)
- Gradle: یک ابزار منبعباز دارای قابلیت پشتیبانی از اسکریپتهای Docker
- Packer: ابزار خودکارسازی ساخت تصاویر برای ماشینها و کانتینرهای داکر
ابزارهای مدیریت پیکربندی (Configuration Management):
- Ansible: یک ابزار ساده و امن برای استفاده در محیطهای کوچک و بزرگ
- Chef: یک ابزار مناسب برای همکاری روی زیرساخت بهعنوان کد (IaC)
- Puppet و SaltStack: یک ابزار کاربردی برای خودکارسازی زیرساخت و پیکربندی مداوم نرمافزار
ابزارهای یکپارچه سازی مداوم/تحویل مداوم (CI/CD):
- CircleCI، Buddy، Jenkins: ابزارهای خطوط لوله پیشرفته برای استقرار و تست محصول
- CodeFresh و GitLab CI: ابزارهای بومی Docker برای مدیریت خطوط لوله Kubernetes
- Travis CI و Wrecker: راهکارهای سبک و انعطافپذیر برای تست و استقرار محصول
شناخت مزایای استفاده از داکر
استفاده از داکر بهعنوان یکی از ابزارهای کاربردی نرمافزار مزایای زیادی بههمراه دارد. این ابزار باعث بهبود عملکرد برنامه شده و فرآیند استقرار نرمافزار را آسان میکند. همچنین، با استفاده از داکر میتوانید با مصرف کمترین منابع، بیشترین بهرهوری را در توسعه محصول داشته باشید. ازجمله سایر مزیتهای مهم این نرمافزار؛ میتوان به موارد زیر اشاره کرد:
- قابلیت حمل
کانتینرهای Docker، برنامهها، کتابخانهها و عوامل وابسته به آنها را در یک محیط مجزا نگهداری میکنند. درنتیجه، بهراحتی میتوانید برنامه را در ایستگاههای کاری متنوع اجرا کنید. همین موضوع موجب حفظ ثبات در تمام چرخه عمر نرمافزار میشود.
- انزوا
سطح بالای انزوای برنامهها و موارد داخل کانتینرهای Docker، یکی دیگر از مزیتهای این نرمافزار محسوب میشود. هر کانتینرهای Docker بهصورت مستقل نسبت به سایر کانتینرها اجرا شده و تأثیر روی دیگران ندارد.
- بهرهوری منابع
Docker بهرهوری منابع بالاتری نسبت به ماشینهای مجازی سنتی دارد. دلیل این موضوع، استفاده کانتینرهای Docker از هسته سیستمعامل یکسان است. به همین دلیل، داکر سبکتر از ماشین مجازی بوده و با منابع کمتری اجرا میشود.
- مقیاسپذیری
Docker به مقیاسپذیری برنامهها نیز کمک میکند. با استفاده از این نرمافزار، میتوانید چند کانتینر را ایجاد کرده و با ابزارهای ارکستراسیون مانند کوبرنیتز یا Docker Swarm، بار کاری را بهطور مؤثر بین آنها توزیع کنید.
- توسعه و استقرار سریعتر
تسریع در توسعه و استقرار سریعترین نرمافزار، از دیگر مزایای مهم Docker محسوب میشود. کانتینرهای داکر به توسعهدهندگان کمک میکنند که در محیطهای محلی مشابه محیط تولید برنامه، خودشان را اجرا کنند.
معرفی اصطلاحات داکر
برای استفاده از داکر لازم است که با اصطلاحات این برنامه نرمافزاری، تا حدودی آشنایی داشته باشید. شناخت این اصطلاحات پایهای به کاربران کمک میکند تا درک بهتری از نحوه عملکرد داکر و اجزای آن پیدا کنند. برخی از اصطلاحات مهم داکر که لازم است آنها را بشناسید، عبارتند از:
- تصویر (Image): تصویر در داکر شامل تمام فایلها، کتابخانهها و تنظیمات موردنیاز برای اجرای یک برنامه در یک کانتینر است. تصاویر بهطور معمول فقط خواندنی هستند.
- کانتینر (Container): کانتینر یک واحد اجرایی است که برنامههای داکر را بهطور ایزوله اجرا میکند. کانتینر از یک تصویر ساخته میشود و میتواند در زمان اجرا تغییر کند.
- رجیستری (Registry): رجیستر مکانی برای ذخیره و توزیع تصاویر داکر است. معروفترین رجیستری این برنامه به عنوان Docker Hub شناخته میشود.
- Dockerfile: داکرفایل فایلی متنی است که دستورات لازم برای ساخت یک تصویر داکر در آن قرار دارد. این دستورات به داکر میگویند که یک چگونه تصویر را بسازد.
- حجم (Volume): حجم فضایی است که برای ذخیره دادهها خارج از کانتینرها استفاده میشود. دادههای ذخیرهشده در این بخش میتوانند بین کانتینرهای مختلف، بهاشتراک گذاشته شوند.
- شبکه (Network): شبکه در داکر به شما کمک میکند تا کانتینرها را در یک شبکه مجازی قرار دهید تا با یکدیگر ارتباط برقرار کنند.
- Docker Compose: این ابزار برای مدیریت چندین کانتینر داکر بهصورت همزمان و هماهنگ استفاده میشود.
کاربرد ایمیج های داکر
تصاویر Docker فایلهای فقط خواندنی هستند که تمام اطلاعات لازم برای ساخت یک کانتینر در آنها نگهداری میشود. درواقع، تصاویر داکر مانند یک الگو آماده عمل میکنند و میگویند چطور باید یک کانتینر داکر ساخته شده و چه نرمافزارها، کتابخانهها و اطلاعاتی برای یک برنامه باید در داخل آن قرار بگیرد. چون تصاویر داکر الگوهای فقط خواندنی هستند، نمیتوانید بهطور مستقیم آنها را تغییر دهید؛ بلکه از این تصاویر تنها میتوانید برای ساخت کانتینرهای جدید استفاده کنید.
تفاوت image و کانتینر در داکر چیست؟
تصاویر داکر و کانتینرها دو مفهوم کلیدی وابسته و هم و در عین حال، مجزا هستند. تصاویر داکر الگوهای آمادهای هستند که برای ساخت کانتینر و اطلاعات آنها استفاده میشوند. در صورتی که کانتینرهای داکر نمونههایی از این تصاویر هستند که در محیطهای ایزوله اجرا میشوند. ازجمله تفاوتهای این دو بخش، میتوان به مواردی که در جدول زیر ارائه شده، اشاره کرد.
تصویر داکر | کانتینر داکر |
برای توزیع و اشتراکگذاری برنامهها استفاده میشود. | برای اجرای برنامه در یک محیط ایزوله استفاده میشود. |
نمایانگر یک تصویر کلی از کد و وابستگیهای آن است. | نمونهای از یک تصویر داکر درحال اجرا است. |
شیء مستقل است. | نیاز به یک تصویر دارد. |
فقط خواندنی است. | امکان تغییرات (خواندن – نوشتن) درحین اجرا وجود دارد. |
با استفاده از docker build ایجاد میشود. | با دستور docker run یا docker create ایجاد میشود. |
از اتصال حجمها و شبکهها پشتیبانی نمیکند. | از اتصال حجمها و شبکهها پشتیبانی میکند. |
قابل اشتراکگذاری است. | فقط درصورت ذخیرهشدن بهعنوان تصویر قابل اشتراکگذاری است. |
در رجیستری داکر یا بهصورت محلی ذخیره میشود. | در میزبانی که آن را اجرا میکند، ذخیره میشود. |
روش نصب داکر روی ویندوز
برای نصب Docker Desktop برروی ویندوز، باید سیستمعاملتان مجهز به ویندوز 10 یا 11 (نسخه Pro یا Enterprise) باشد. همچنین، برای استفاده از Docker باید WSL 2 (Windows Subsystem for Linux) را رو سیستم فعال کنید. پس از دانلود این فایل از وبسایت رسمی Docker و نصب آن، باید فایل Docker Desktop Installer.exe را اجرا کنید.
سپس هنگام نصب، باید گزینه استفاده از WSL 2 را انتخاب کرده و فرآیند نصب را دنبال کنید. بعد از اتمام نصب برنامه، Docker Desktop را راهاندازی کرده و با پذیرفتن شرایط استفاده، آن را اجرا کنید. درصورت نیاز به نصب داکر ازطریق خط فرمان، میتوانید دستور نصب را در PowerShell یا Command Prompt اجرا کنید و ادامه مراحل نصب را انجام دهید تا داکر روی ویندوز نصب شده و آماده استفاده باشد. برای کسب اطلاعات بیشتر درباره این موضوع، پیشنهاد میکنیم مطلب نصب داکر روی ویندوز را بخوانید.
معرفی کاربردی ترین نسخه های داکر
داکر در نسخههای متنوعی ارائه شده و هرکدام از این نسخهها، کاربرد خاصی دارند. نسخههای داکر بهطور مداوم بهروزرسانی میشوند. درنتیجه، موقع استفاده از آخرین آپدیتهای این نسخهها، شاهد بهبودهایی در عملکرد نرمافزار، رفع مشکلات آن و اضافهکردن ویژگیهای جدید به داکر خواهید بود. در ادامه، نسخههای مختلف این نرمافزار را بههمراه کاربرد آنها برای شناخت بیشتر معرفی کردهایم.
- Docker Engine: این بخش هستهای داکر بوده و امکان اجرای کانتینرها را فراهم میکند. دو نوع مختلف از Docker Engine وجود دارد:
– Docker Engine – Community: نسخه رایگان و متنباز داکر است.
– Docker Engine – Enterprise: نسخهای است که ویژگیها و ابزارهای اضافی برای سازمانها را ارائه میدهد و دارای پشتیبانی سطح بالا است.
- Docker Desktop: این نسخه برای توسعهدهندگانی ارائه شده که از سیستمعاملهای macOS و Windows استفاده میکنند. Docker Desktop دارای یک رابط گرافیکی مناسب بوده و ابزارهای اضافی برای مدیریت داکر را دارد. این نسخه در دو مدل Community و Enterprise موجود است.
- Docker CE (Community Edition): این نسخه داکر رایگان است و ویژگیهای ضروری برای ایجاد، استقرار و اجرای کانتینرها را دارد. این ابزار معمولاً توسط توسعهدهندگان و تیمهای کوچک استفاده میشود.
- Docker EE (Enterprise Edition): این نسخه داکر ویژگیها بیشتری دارد و با پشتیبانی همراه است. داکر این ابزار را برای سازمانهای بزرگ ارائه داده و شامل ابزارهای پیشرفته برای امنیت، مدیریت و نظارت است.
نحوه نصب داکر در اوبونتو
برای نصب Docker Engine در اوبونتو، لازم است ابتدا نسخه 64 بیتی اوبونتو و یکی از نسخههای پشتیبانیشده آن، مانند 20.04 LTS یا 22.04 LTS، را روی سیستمعامل نصب کرده باشید. سپس باید بستههای Docker غیررسمی را قبل نصب نسخه اصلی حذف کنید تا با این نرمافزار تداخل ایجاد نکنند. در قدم بعدی میتوانید از مخزن رسمی Docker، این نرمافزار دانلود کرده و برای نصب Docker از آن استفاده کنید. برای این کار، نیاز به اضافهکردن کلید GPG رسمی Docker و افزودن مخزن به لیست منابع سیستم خواهید داشت.
سپس با استفاده از دستور مدیریت بسته Docker Engine، قسمت apt را روی سیستم نصب کنید. برای اطمینان از نصب موفقیتآمیز نرمافزار میتوانید از دستور docker run hello-world برای اجرای یک آزمایشی داکر استفاده کنید. این دستور یک تصویر تست را دانلود کرده و در کانتینر اجرا میکند. در نتیجه متوجه خواهید شد که Docker به درستی نصب و راهاندازی شده است. برای کسب اطلاعات بیشتر درباره این موضوع، پیشنهاد میکنیم مطلب نصب داکر در اوبونتو را بخوانید.
معرفی روش های مختلف رفع مشکل تحریم داکر
استفاده از داکر در کشورهایی مانند ایران، که با مشکلات تحریمهای بینالمللی دستوپنجه نرم میکنند، سختتر است. برای رفع مشکل تحریم Docker در کشورهایی که دسترسی به Docker Hub محدود شده، روشهای مختلفی وجود دارد. هرکدام از این روشها، مزایا و معایب خاص خودشان را دارند و با توجه به شرایط و نیازتان، فرصت این را دارید که از یک یا چند نمونه از آنها برای رفع مشکل تحریم Docker استفاده کنید. ازجمله رایجترین روشهای رفع تحریم داکر، میتوان به موارد زیر اشاره کرد:
- استفاده از VPN یا پروکسی: با استفاده از VPN یا پروکسی برای داکر میتوانید مشکل دسترسی به Docker Hub را برطرف کنید. در این روش، ازطریق یک کشور غیر تحریمی میتوانید با داکر ارتباط برقرار کرده و محدودیتها را دور بزنید.
- استفاده از Mirror های محلی Docker: برخی از سازمانها از Mirror های Docker Hub برای رفع مشکل تحریم استفاده میکنند. این Mirror ها محتوای Docker Hub را بهصورت محلی ذخیره میکنند. درنتیجه، بدون نیاز به دسترسی مستقیم به Docker Hub میتوانید تصاویر Docker را دانلود کنید.
- استفاده از رجیسترهایهای جایگزین: علاوهبر Docker Hub، رجیسترهای دیگری مانند GitHub Container Registr،Quay.io ،Google Container Registry (GCR) و Amazon Elastic Container Registry (ECR) وجود دارند که میتوانید از آنها استفاده کنید.
- استفاده از Docker Registry های خصوصی: با راهاندازی رجیسترهای خصوصی داکر نیز میتوانید مشکل دسترسی به این نرمافزار کاربردی بینالمللی را برطرف کنید. این Registry به کاربران این امکان را میدهند که تصاویر Docker را بهصورت محلی ذخیره و مدیریت کرده و مشکلات تحریم داکر را برطرف کنند.
- استفاده از CI/CD برای بارگذاری و دانلود تصاویر: از ابزارهای CI/CD مانند Jenkins ،GitLab CI یا GitHub Actions نیز میتوانید برای رفع مشکل تحریم داکر استفاده کنید. این ابزارها تصاویر Docker را بهطور خودکار از منابع تحریمی بارگذاری میکنند؛ بنابراین، در صورتی که دسترسی مستقیم به Docker Hub نداشته باشید، بهراحتی میتوانید تصاویر داکر را دانلود کرده و منتشر کنید.
- تغییر تنظیمات DNS: تغییر تنظیمات DNS به یک سرور DNS غیر تحریمی هم میتواند برای رفع مشکلات دسترسی به منابع Docker و دور زدن تحریمهای این نرمافزار مؤثر باشد.
برای کسب اطلاعات بیشتر درباره این موضوع، پیشنهاد میکنیم مطلب رفع مشکل تحریم داکر را بخوانید.
فرق داکر و کوبرنتیز چیست؟
Docker و Kubernetes هردو نرمافزارهای محبوبی برای ایجاد کانتینرهای نرمافزاری محسوب میشوند؛ با این وجود این دو نرمافزار با هم تفاوتهایی نیز دارند. Docker برای بستهبندی و اجرای برنامهها در کانتینرها استفاده میشود؛ در صورتی که کوبرنیتز بهعنوان ابزاری برای هماهنگی و مدیریت این کانتینرها در محیطهای مختلف استفاده میشود؛ یعنی داکر برای ایجاد کانتینرهای نرمافزاری کاربرد دارد، اما از Kubernetes برای مدیریت و هماهنگی در استفاده از کانتینرهای ساخته شده توسط داکر استفاده میشود.
معرفی ابزارهای جایگزین داکر
اگرچه Docker یکی از محبوبترین پلتفرمها برای ساخت کانتینرهای نرمافزاری و اجرای برنامههای مختلف محسوب میشود؛ اما در شرایط خاصی ممکن است امکان دسترسی و استفاده از این برنامه برای توسعهدهندگان وجود نداشته باشد. در این شرایط میتوانید از جایگزینهای داکر استفاده کنید. ازجمله جایگزینهای این ابزار که گزینههای بیشتری را برای ساخت و استقرار کانتینر در اختیار کاربران قرار میدهند، عبارتند از:
نرمافزار | ویژگیها | مناسب برای | ویژگی منحصربهفرد |
Podman | بدون دایمون، سازگار با CLI Docker، امکان استفاده از Podman Desktop | توسعهدهندگان و کسانی که به امنیت و عملکرد اهمیت میدهند. | معماری بدون دایمون، عملکرد بالا و کاهش سطح حملات |
LXC | کانتینرهای سیستمی که شامل یک سیستمعامل کامل شبیه ماشینهای مجازی هستند. | برنامههایی که به دسترسی بیشتر به سیستمعامل نیاز دارند. | ایجاد سیستمعامل کامل درون کانتینر |
runc | زمان اجرای سبک برای ایجاد کانتینر و سازگار با OCI | توسعهدهندگان و افرادی که نیاز به راهاندازی سریع کانتینر دارند. | ابزار سطح پایین و سبک برای ایجاد کانتینرها |
Rancher Desktop | راه حل مبتنیبر دسکتاپ، پشتیبانی از Docker Daemon و Kubernetes | توسعهدهندگان و کسانی که میخواهند ابزارهای مختلف کانتینری را مدیریت کنند. | مدیریت آسان کانتینرها و خوشههای Kubernetes |
Kubernetes | ارکستراسیون کانتینرها، مدیریت خودکار بارهای کاری، مقیاسپذیری و تحمل خطا | استقرار کانتینرها در مقیاس بزرگ و محیطهای تولیدی | ارکستراسیون پیشرفته و مدیریت خوشهها |
Red Hat OpenShift | پلتفرم مبتنیبر Kubernetes برای استقرار و مدیریت برنامهها در سطح سازمانی | سازمانهای بزرگ و محیطهای پیچیده تولیدی | مدیریت ساده و ابزارهای امنیتی و مقیاسپذیر |
Hyper-V Containers | کانتینرهای ویندوزی با استفاده از ماشینهای مجازی Hyper-V برای ایزولهسازی بیشتر | اجرای کانتینرهای ویندوز برروی ویندوز سرور | ایزولهسازی بیشتر و امنیت بالا در محیط ویندوزی |
Buildah | ساخت تصاویر کانتینری بدون دایمون، مدیریت تصاویر بهصورت ساده | کسانی که تنها به ساخت تصاویر نیاز دارند. | ایجاد تصاویر کانتینری سبک بدون نیاز به دایمون |
OrbStack | جایگزین Docker Desktop برای macOS، پشتیبانی از Docker Compose و Kubernetes | کاربران macOS که بهطور منظم با کانتینرها کار میکنند. | سازگاری کامل با macOS و عملکرد سریعتر نسبت به Docker |
PaaS Solutions | ارائه خدمات مدیریتشده برای استقرار کانتینرها در فضای ابری، بدون نیاز به پیکربندی زیرساخت | استقرار سریع و بدون نیاز به مدیریت پیچیده زیرساخت | سادهسازی استقرار بدون نیاز به مدیریت کانتینر |
داکر سوارم چیست؟
Docker Swarm یک ابزار ارکستراسیون کانتینر است که برای خوشهبندی و زمانبندی کانتینرهای Docker استفاده میشود. با استفاده از این ابزار میتوانید کانتینرهای Docker را روی چندین سرور (یا ماشین) مختلف مدیریت کرده و بهطور همزمان اجرا کنید.
به عبارت سادهتر، تصور کنید چندین کامپیوتر یا سرور دارید که هرکدام از آنها برنامههای مختلفی را در قالب کانتینر اجرا میکنند. Docker Swarm این سرورها را بههم متصل کرده و آنها را به یک سیستم بزرگ و یکپارچه تبدیل میکند. درنتیجه، میتوانید تمام سرورها و کانتینرها راز بهصورت متمرکز و با کمک یک سیستم واحد کنترل کنید، بدون اینکه نیاز به نظارت روی تکبهتک آنها داشته باشید.
درنتیجه، با کمک این ابزار میتوانید منابع را بهتر مدیریت کرده و برنامهها را در مقیاسهای بزرگ بدون پیچیدگی و بهصورت ساده و یکپارچه اجرا کنید. برای کسب اطلاعات بیشتر درباره این موضوع، پیشنهاد میکنیم مطلب داکر سوارم چیست را نیز بخوانید.
داکر هاب چیست؟
Docker Hub پلتفرم قدرتمند است که توسعه برنامههای نرمافزاری را سادهتر میکند. این ابزار یک رجیستری یا مخزن برای ذخیره مدیریت و به اشتراکگذاری تصاویر داکر محسوب میشود؛ به عبارت دیگر، داکر هاب به کاربران این امکان را میدهد که تصاویر کانتینرهای مدنظرشان را بهراحتی ذخیره کرده و آنها را بین تیمها و سیستمهای مختلف بهآسانی بهاشتراک بگذارند.
با استفاده از این پلتفرم میتوانید بهصورت یکپارچه و با بالاترین بهرهوری، از ابزارهایتان در داکر استفاده کنید. همچنین این پلتفرم فرآیند استقرار و دسترسی به برنامههای کاربردی داکر را سادهتر میکند. درنتیجه، با کمک Docker Hub میتوانید بدون مشکل، برنامههایتان را در محیطهای مختلف اجرا کنید. برای کسب اطلاعات بیشتر درباره این موضوع، پیشنهاد میکنیم مطلب داکر هاب چیست را نیز بخوانید.
Dockerfile چیست؟
Dockerfile در واقع یک فایل متنی است که مجموعه از دستورات و دستورالعملها را درون خودش جای داده است. این فایل متنی به داکر میگوید که چطور باید یک تصاویر تصویر یا ایمیج ایجاد کند. به عبارت سادهتر، Dockerfile نقشه راهی است که نشان میدهد برای ساخت یک کانتینر جدید باید از چه برنامهها، ابزارها، تنظیمات و پیکربندیهایی استفاده شود.
در داخل Dockerfile دستوراتی مانند نحوه نصب نرمافزارها، کپیکردن فایلها و… که در زمان ساخته تصویر استفاده میشوند، قرار دارند. با استفاده از این فایل، داکر میتواند بهصورت خودکار یک تصویر بسازد که برای اجرا در برنامهها در کانتینرها استفاده میشود. برای کسب اطلاعات بیشتر درباره این موضوع، پیشنهاد میکنیم مطلب Dockerfile چیست را نیز مطالعه کنید.
داکر کامپوز چیست؟
Docker Compose این امکان را به کاربران میدهد که کانتینرهای مختلف برنامههایشان را بهصورت کد در یک فایل YAML تعریف کنند. این فایل به نام docker-compose.yml شناخته میشود و میتوانید آن را به مخزن نرمافزار اضافه کنید.
یعنی با استفاده از ابزار Docker Compose میتوانید همه کانتینرهای مورد نیاز برنامه را در قالب یک فایل تعریف کرده و تنها با یک خط فرمان، همه موارد ذخیرهشده در این فایل را اجرا و برنامه را راهاندازی کنید. برای راهاندازی کانتینرها تنها باید دستور docker-compose up را اجرا کنید تا فایل ذخیرهشده اجرا و برنامههایتان بهصورت خودکار راهاندازی شوند. این ابزار یک گزینه کاربردی برای اجرای نرمافزارهای بزرگ و پیچیده محسوب میشود. برای کسب اطلاعات بیشتر در این باره، پیشنهاد میکنیم مطلب داکر کامپوز چیست را بخوانید.
جمع بندی: داکر چیست؟
در این مطلب سعی کردیم به سؤال داکر چیست پاسخ داده و مزایا و معایب و نمونههای مشابه این نرمافزار را معرفی کنیم تا کسانی که قصد یادگیری Docker را دارند، با آگاهی بیشتری آموزشهای آن را دنبال کرده و در زمینه استفاده از این نرمافزار، متخصص شوند. در صورتی که توسعهدهنده نرمافزار هستید یا قصد دارید بهتازگی در این مسیر قدم بردارید، این مطلب یک دید کلی درباره ابزارهای جدید توسعه نرمافزار مانند داکر، نسخههای مختلف آن، کوبرنتیز و مزایا و کاربردهای داکر در اختیارتان قرار میدهد.
توجه به این نکته ضروری است که اگر چه استفاده از داکر یک انتخاب عالی برای توسعه زیرساختهای نرمافزاری محسوب میشود، اما برنامههای توسعهدادهشده روی این بستر را باید روی سرورهای قدرتمند مانند سرورهای ابرآراز اجرا کنید تا برنامه به بهترین نحو کار کند.
سوالات متداول
- داکر چیست؟
داکر یک پلتفرم نرمافزاری سبک است که برای ایجاد، اجرا و مدیریت کانتینرها، که حاوی کدها و دستورالعملهای برنامههای نرم افزاری هستند، استفاده میشود.
- داکر چه تفاوتی با ماشین مجازی دارد؟
در این پلتفرم بهجای شبیهسازی سیستم عامل، کانتینرهای سیستم عامل میزبان را به اشتراک میگذارند. درنتیجه، سرعت داکر از ماشین مجازی بیشتر است و از منابع بهینهتر استفاده میشود.
- چرا باید از داکر استفاده کنیم؟
برای اجرای کد برنامههایتان در سیستمها و زیرساختهای مختلف بدون مشکل، لازم است از داکر یا نرمافزارهای مشابه که حاوی بستههای نرمافزاری اختصاصی هستند، استفاده کنید.
- آیا داکر برای همه پروژهها مناسب است؟
از داکر معمولاً برای پروژههای نرمافزاری پیچیده و بزرگ، که در مقیاس کلان اجرا میشوند، استفاده میگردد.
سلام
من درباره داکر تازه اطلاعات کسب کردم یک برنامه لینوکسی ساختم و میخوام اون رو با فلش روی هر پی سی دیگری اجرا کنم و اینکه تنظیمات اون بهم نریزه و البته امنیت کدها و برنامه هم حفظ بشه با سرچ هایی ک داشتم به داکر رسیدم حالا اولا آیا داکر آفلاین هم کار میکنه؟ و اینکه یه لینک آموزشی معرفی کنید برای تبدیل برنامه ام