ثبت سفارش آنلاین به‌زودی فعال می‌شود. تا آن موقع برای سفارش با ما تماس بگیرید.Online ordering is coming soon. Until then, please contact us to order.تماس با ماContact us
JolfaCLOUD

مرکز آموزش / گیت و DevOps

داکر چیست؟ image، کانتینر و volume به زبان ساده

چرا داکر در چند سال اخیر همه‌جا هست، فرق کانتینر با ماشین مجازی، مفاهیم image، container، volume و registry، دستورهای پایه، و اینکه کی داکر لازم دارید و کی یک هاست معمولی کافی است.

۹ دقیقه مطالعه · به‌روزرسانی آبان ۱۴۰۵

This guide is available in Persian for now. Switch to FA to read it.

جملهٔ معروف «روی سیستم من کار می‌کرد!» دلیل به وجود آمدن داکر است. برنامه‌ای که روی لپ‌تاپ برنامه‌نویس درست کار می‌کند، روی سرور به خاطر یک نسخهٔ متفاوت PHP، یک کتابخانهٔ جاافتاده یا یک تنظیم متفاوت خراب می‌شود. داکر برنامه را همراه با همهٔ چیزهایی که لازم دارد در یک بستهٔ استاندارد می‌پیچد، تا هر جا اجرا شود، دقیقاً همان‌طور اجرا شود.

کانتینر یا ماشین مجازی؟

ماشین مجازی (سرور مجازی)کانتینر
چه چیزی را جدا می‌کندیک کامپیوتر کامل با سیستم‌عامل خودشفقط برنامه و وابستگی‌هایش؛ هستهٔ سیستم‌عامل مشترک است
حجمچند گیگابایتاز چند ده مگابایت
زمان روشن شدندقیقهثانیه
جداسازی امنیتیقویخوب، ولی ضعیف‌تر از VM

این دو رقیب نیستند: معمول‌ترین حالت این است که داکر روی یک سرور مجازی اجرا شود و چند سرویس را کنار هم و جدا از هم نگه دارد.

چهار مفهوم اصلی

  • Image: قالب فقط‌خواندنی برنامه؛ مثلاً nginx:1.27 یا wordpress:latest. مثل فایل نصب، ولی کامل و آماده.
  • Container: یک نمونهٔ در حال اجرا از image. از یک image می‌شود ده کانتینر ساخت. هر چیزی که داخل کانتینر عوض شود، با پاک شدن کانتینر از بین می‌رود.
  • Volume: فضای ذخیره‌سازی بیرون از کانتینر که می‌ماند؛ دیتابیس و فایل‌های آپلودی باید این‌جا باشند.
  • Registry: جایی که imageها نگه داشته می‌شوند. معروف‌ترین، Docker Hub است؛ GitHub (ghcr.io) و GitLab هم رجیستری دارند.

دستورهای پایه

bash
docker run -d --name web -p 8080:80 nginx:1.27   # دانلود image و اجرای کانتینر
docker ps                                       # کانتینرهای در حال اجرا
docker logs -f web                              # لاگ زنده
docker exec -it web sh                          # رفتن به داخل کانتینر
docker stop web && docker rm web                # توقف و حذف
docker images                                   # imageهای دانلودشده
docker volume ls                                # volumeها

-p 8080:80 یعنی پورت ۸۰۸۰ سرور به پورت ۸۰ داخل کانتینر وصل شود. این ساده‌ترین شکل است؛ در عمل سرویس‌ها را با Docker Compose و یک فایل تعریف می‌کنیم تا قابل تکرار باشند.

چرا این‌قدر محبوب شد

  • نصب یک‌خطی نرم‌افزارهای پیچیده: ابزارهایی مثل Uptime Kuma، GitLab، n8n، Nextcloud یا یک دیتابیس، با یک image رسمی و چند دقیقه.
  • چند نسخه کنار هم: پروژهٔ قدیمی با PHP 7.4 و پروژهٔ جدید با PHP 8.3 روی یک سرور، بدون تداخل.
  • جابه‌جایی آسان: با فایل compose و volumeها، کل سرویس به سرور دیگر منتقل می‌شود.
  • استاندارد CI/CD: گیت‌هاب و گیت‌لب برای تست و دیپلوی خودکار از کانتینر استفاده می‌کنند.

آیا شما داکر لازم دارید؟

نیاز شماپیشنهاد
یک سایت وردپرسی یا شرکتیهاست cPanel؛ داکر لازم نیست و نگهداری‌اش با خود شماست.
اپلیکیشن Node.js، Python یا Goسرور مجازی + داکر
چند ابزار داخلی (مانیتورینگ، اتوماسیون، ویکی)سرور مجازی + Docker Compose
یک سرویس خیلی سبک روی روترکانتینر میکروتیک
سرور مجازی با IP اختصاصی برای میکروتیک، داکر و سرویس‌های خودتاندیدن پلن‌های سرور مجازی

منابع

  1. Docker Docs — Get started docs.docker.com/get-started
  2. Docker Docs — Volumes docs.docker.com/engine/storage/volumes