داکر (Docker) به عنوان یک پلتفرم متن‌باز برای توسعه، ارسال و اجرای برنامه‌ها با استفاده از کانتینرها، انقلابی در نحوه استقرار و مدیریت نرم‌افزار ایجاد کرده است. این مقاله به شما کمک می‌کند تا با مفاهیم اساسی داکر آشنا شوید و گام‌های اولیه را برای استفاده از آن بردارید.

  • **قابلیت حمل (Portability):** کانتینرها مستقل از زیرساخت هستند. یک کانتینر داکر که روی لپ‌تاپ شما کار می‌کند، دقیقاً به همان شکل روی سرور تولید، در فضای ابری یا روی یک سیستم دیگر نیز اجرا خواهد شد. این امر مشکل «روی سیستم من کار می‌کرد!» را از بین می‌برد.
  • **ایزوله‌سازی (Isolation):** هر کانتینر یک محیط ایزوله دارد. این بدان معناست که برنامه‌های در حال اجرا در یک کانتینر، بر برنامه‌های دیگر در کانتینرهای مجاور تأثیری نمی‌گذارند. این ویژگی برای اجرای چندین برنامه با وابستگی‌های متفاوت روی یک سرور بسیار مفید است.
  • **کارایی و سبکی (Efficiency & Lightweight):** برخلاف ماشین‌های مجازی (Virtual Machines) که هر کدام یک سیستم عامل کامل را اجرا می‌کنند، کانتینرهای داکر هسته سیستم عامل میزبان را به اشتراک می‌گذارند. این باعث می‌شود کانتینرها بسیار سبک‌تر بوده، سریع‌تر بوت شوند و منابع کمتری مصرف کنند. (برای درک بهتر، به تصویر مقایسه VM و Docker در ادامه نگاه کنید.)
  • **توسعه سریع‌تر (Faster Development):** با استفاده از کانتینرها، توسعه‌دهندگان می‌توانند به سرعت محیط‌های توسعه را راه‌اندازی کنند، وابستگی‌ها را مدیریت کرده و باگ‌ها را در محیطی مشابه تولید بازتولید کنند.
  • **مقیاس‌پذیری (Scalability):** داکر به شما امکان می‌دهد تا به راحتی تعداد کانتینرهای در حال اجرا را برای پاسخگویی به افزایش تقاضا افزایش یا کاهش دهید. این برای برنامه‌های مبتنی بر بسیار حیاتی است.
  • **همکاری بهبود یافته (Improved Collaboration):** تیم‌ها می‌توانند از طریق تصاویر داکر (Docker Images) محیط‌های توسعه و تولید را به اشتراک بگذارند و اطمینان حاصل کنند که همه با یک پایه کد و محیط یکسان کار می‌کنند.
تصویر مقایسه ماشین مجازی و داکر کانتینر
تصویر مقایسه ماشین مجازی و داکر کانتینر
  • **Docker Image (تصویر داکر):** یک قالب فقط خواندنی (Read-Only) که شامل برنامه شما، تمام وابستگی‌های آن، کد، ابزارها، کتابخانه‌ها و فایل‌های پیکربندی است. تصاویر داکر بلوک‌های سازنده کانتینرها هستند. شما می‌توانید آن‌ها را از دانلود کنید یا خودتان بسازید.
  • **Docker Container (کانتینر داکر):** یک نمونه قابل اجرا از یک تصویر داکر. کانتینرها محیط‌های ایزوله و قابل حمل هستند که برنامه شما در آن اجرا می‌شود. شما می‌توانید یک کانتینر را شروع، متوقف، حذف یا به آن متصل شوید.
  • **Dockerfile (فایل داکر):** یک فایل متنی ساده که شامل دستورالعمل‌هایی برای ساخت یک تصویر داکر است. این فایل به داکر می‌گوید که چگونه محیط برنامه شما را بسازد و چه چیزهایی را در آن قرار دهد.
  • **Docker Engine (موتور داکر):** هسته پلتفرم داکر که شامل Docker Daemon (سرور), REST API و Docker CLI (کلاینت) است. این موتور مسئول ساخت، اجرا و مدیریت کانتینرها است.
  • **Docker Hub (داکر هاب):** یک ریپازیتوری (Repository) عمومی برای تصاویر داکر. شما می‌توانید تصاویر آماده را از داکر هاب دانلود کنید یا تصاویر خود را برای به اشتراک‌گذاری با دیگران در آنجا آپلود کنید. این سرویس شبیه به GitHub برای کد است، اما برای تصاویر داکر.
  • **نصب داکر دسکتاپ (Windows/macOS):**
  • **نصب داکر انجین (Linux):** (برای توزیع‌های مختلف لینوکس دستورالعمل‌های متفاوتی وجود دارد.)
  • **بررسی تصویر:** داکر ابتدا بررسی می‌کند که آیا تصویر `hello-world` به صورت محلی روی سیستم شما موجود است یا خیر.
  • **دانلود (Pull):** اگر تصویر موجود نباشد، داکر آن را از Docker Hub دانلود می‌کند.
  • **اجرای کانتینر:** داکر یک کانتینر جدید از این تصویر ایجاد کرده و آن را اجرا می‌کند.
  • **نمایش خروجی:** کانتینر پیام «Hello from Docker!» و اطلاعات دیگری را نمایش می‌دهد و سپس متوقف می‌شود.
  • **`docker pull [image_name]`:** دانلود یک تصویر از Docker Hub.
  • **`docker run [image_name]`:** ایجاد و اجرای یک کانتینر جدید از یک تصویر.
  • **`docker ps`:** نمایش کانتینرهای در حال اجرا. برای دیدن تمام کانتینرها (در حال اجرا و متوقف شده) از `docker ps -a` استفاده کنید.
  • **`docker stop [container_id/name]`:** متوقف کردن یک کانتینر در حال اجرا.
  • **`docker start [container_id/name]`:** شروع مجدد یک کانتینر متوقف شده.
  • **`docker rm [container_id/name]`:** حذف یک کانتینر (باید ابتدا متوقف شده باشد).
  • **`docker rmi [image_name]`:** حذف یک تصویر.
  • **`docker images`:** نمایش لیست تمام تصاویر موجود روی سیستم شما.
آشنایی با داکر: شروعی قدرتمند در دنیای کانتینرها
آشنایی با داکر: شروعی قدرتمند در دنیای کانتینرها
داکر چیست؟

داکر یک پلتفرم متن‌باز برای توسعه، ارسال و اجرای برنامه‌ها با استفاده از کانتینرها است. کانتینرها بسته‌های ایزوله و قابل حملی هستند که شامل یک برنامه و تمام وابستگی‌های آن (کد، ابزارها، کتابخانه‌ها و تنظیمات) می‌شوند و می‌توانند به صورت یکسان در هر محیطی اجرا شوند.

تفاوت داکر با ماشین مجازی (VM) چیست؟

ماشین‌های مجازی (VM) هر کدام یک سیستم عامل کامل را اجرا می‌کنند و منابع زیادی مصرف می‌کنند. در مقابل، کانتینرهای داکر هسته سیستم عامل میزبان را به اشتراک می‌گذارند، بنابراین بسیار سبک‌تر، سریع‌تر و کارآمدتر هستند. VMها مجازی‌سازی سخت‌افزار را انجام می‌دهند، در حالی که داکر مجازی‌سازی سطح سیستم عامل را ارائه می‌دهد.

چرا باید از داکر استفاده کنم؟

داکر مزایای زیادی دارد، از جمله: قابلیت حمل بالا (برنامه‌ها در هر محیطی یکسان اجرا می‌شوند)، ایزوله‌سازی برنامه‌ها، کارایی و سبکی، توسعه سریع‌تر، مقیاس‌پذیری آسان و بهبود همکاری در تیم‌های توسعه.

Docker Image و Docker Container چه تفاوتی دارند؟

Docker Image یک قالب فقط خواندنی (Read-Only) است که شامل تمام موارد لازم برای اجرای یک برنامه می‌شود. Docker Container یک نمونه قابل اجرا از یک Image است. به عبارت دیگر، Image یک طرح اولیه است و Container یک ساختمان ساخته شده بر اساس آن طرح.