Skip to Content

 

`


Docker , Image & Container

آشنایی با  Image , Docker و Container


مقدمه


امروزه یکی از چالش‌های توسعه نرم‌افزار، اجرای یکسان برنامه‌ها در محیط‌های مختلف است. ممکن است برنامه‌ای روی سیستم توسعه‌دهنده بدون مشکل اجرا شود، اما روی سیستم دیگری به دلیل تفاوت نسخه کتابخانه‌ها یا تنظیمات اجرا نشود. Docker ابزاری است که این مشکل را برطرف می‌کند و امکان اجرای برنامه‌ها را در محیطی ایزوله و قابل حمل فراهم می‌سازد.


Docker چیست؟


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

از مهم‌ترین مزایای Docker می‌توان به موارد زیر اشاره کرد:

  • اجرای یکسان برنامه در محیط‌های مختلف
  • راه‌اندازی سریع پروژه
  • مدیریت آسان وابستگی‌ها
  • مصرف منابع کمتر نسبت به ماشین‌های مجازی (Virtual Machine)


Docker Image چیست؟


Docker Image را می‌توان به عنوان یک قالب یا الگوی آماده در نظر گرفت. Image شامل برنامه، کتابخانه‌ها، فایل‌ها و تنظیمات موردنیاز برای اجرای یک نرم‌افزار است.

به عبارت دیگر، Image فقط یک فایل آماده است و به تنهایی اجرا نمی‌شود.

برای مشاهده Imageهای موجود روی سیستم می‌توان از دستور زیر استفاده کرد:

                                                           docker images


Docker Container چیست؟


Docker Container نمونه در حال اجرای یک Image است. زمانی که یک Image اجرا می‌شود، Docker یک Container ایجاد می‌کند و برنامه داخل آن اجرا خواهد شد.

برای مشاهده Containerهای در حال اجرا از دستور زیر استفاده می‌شود:

                                                               docker ps

و برای مشاهده تمام Containerها (در حال اجرا و متوقف‌شده):

                                                            docker ps -a


تفاوت Image و Container


گاهی این دو مفهوم با یکدیگر اشتباه گرفته می‌شوند، اما تفاوت آن‌ها بسیار ساده است:

                     Docker Image                   Docker Container
قالب آماده برنامهنمونه در حال اجرای Image
قابل اجرا نیستدر حال اجرا یا متوقف‌شده است
می‌توان از آن چندین Container ساختاز یک Image ایجاد می‌شود

به عنوان مثال، می‌توان از یک Image مانند nginx چندین Container مختلف ایجاد کرد که هر کدام به صورت مستقل اجرا شوند.


چرخه ساده اجرای Docker


فرآیند کار Docker را می‌توان به صورت زیر نمایش داد:

دریافت یا ساخت Image
          │
          ▼
      docker run
          │
          ▼
   ایجاد و اجرای Container
          │
          ▼
مدیریت Container (Start / Stop / Remove)

این چرخه نشان می‌دهد که ابتدا یک Image از Docker Hub دریافت یا توسط کاربر ساخته می‌شود، سپس از روی آن یک Container اجرا شده و در ادامه می‌توان آن را مدیریت کرد.


مثال عملی


برای آشنایی با نحوه کار Docker، دستور زیر اجرا شد:

                                                  docker run hello-world

در اولین اجرا، Docker بررسی می‌کند که آیا Image موردنظر روی سیستم وجود دارد یا خیر. اگر Image موجود نباشد، آن را به صورت خودکار از Docker Hub دانلود می‌کند. سپس یک Container از روی آن Image ایجاد شده و پیام زیر نمایش داده می‌شود:

                                                      Hello from Docker!
This message shows that your installation appears to be working correctl y.

پس از اجرای دستور، می‌توان Container ایجادشده را مشاهده کرد:

                                                            docker ps -a

همچنین Image دانلودشده نیز با دستور زیر قابل مشاهده است:

                                                           docker images


Docker Compose

در بسیاری از پروژه‌ها، تنها یک Container کافی نیست. برای مثال، یک پروژه Odoo معمولاً علاوه بر خود Odoo به یک پایگاه داده PostgreSQL نیز نیاز دارد. مدیریت این سرویس‌ها به صورت جداگانه دشوار است.

Docker Compose ابزاری است که امکان اجرای چندین Container را به صورت هم‌زمان و با یک دستور فراهم می‌کند. تنظیمات سرویس‌ها در فایل docker-compose.yml یا compose.yaml نوشته می‌شود.

نمونه فایل Compose:

services:
  db:
    image: postgres:16

  web:
    image: nginx

اجرای سرویس‌ها:

                                                    docker compose up -d

توقف سرویس‌ها:

                                                     docker compose down


Docker Volume

به طور پیش‌فرض، اطلاعات داخل یک Container دائمی نیستند و در صورت حذف Container ممکن است از بین بروند.

Docker Volume برای ذخیره دائمی اطلاعات استفاده می‌شود. داده‌هایی که داخل Volume ذخیره می‌شوند، حتی پس از حذف Container نیز باقی می‌مانند و می‌توان از آن‌ها در Containerهای جدید استفاده کرد.

Volume بیشتر برای نگهداری اطلاعات پایگاه داده، فایل‌های کاربران و لاگ‌ها کاربرد دارد.

نمونه استفاده از Volume:

         docker run -d -v my-volume:/var/lib/postgresql/data postgres:16


جمع‌بندی


Docker یکی از ابزارهای مهم توسعه نرم‌افزار است که با استفاده از Image و Container اجرای برنامه‌ها را در محیط‌های مختلف ساده و یکسان می‌کند.

در این مقاله با مفهوم Docker، تفاوت Image و Container، چرخه ساده اجرای Docker و یک مثال عملی از اجرای دستور docker run hello-world آشنا شدیم. این مفاهیم پایه، اولین قدم برای یادگیری Docker و استفاده از آن در پروژه‌های واقعی هستند.