آموزش داکر از صفر تا اجرای اولین کانتینر
بازگشت به بلاگ
آموزش

آموزش داکر از صفر تا اجرای اولین کانتینر

تیم توسعه ManaDev
۱۸ مهر ۱۴۰۵
۱۰ دقیقه مطالعه

مشکل قدیمی برنامه‌نویس‌ها: «روی سیستم من کار می‌کرد!»

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

داکر چیست؟

داکر یک پلتفرم متن‌باز برای ساخت، انتشار و اجرای اپلیکیشن‌ها داخل واحدهایی به نام «کانتینر» است. کانتینر بسته‌ای سبک و ایزوله است که کد شما را همراه تمام وابستگی‌هایش — کتابخانه‌ها، تنظیمات و فایل‌های موردنیاز — در یک واحد قابل‌حمل قرار می‌دهد. نتیجه: اپلیکیشن هرجا اجرا شود، دقیقاً یکسان کار می‌کند.

تفاوت کانتینر با ماشین مجازی

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

  • کانتینر از کرنل سیستم‌عامل میزبان استفاده می‌کند: سبک (چند مگابایت)، سریع و در چند ثانیه آماده‌ی اجراست.

مفاهیم کلیدی داکر

  • Image (ایمیج): قالب آماده و فقط‌خواندنی برای ساخت کانتینر؛ مثل یک اسنپ‌شات از محیط اپلیکیشن.

  • Container (کانتینر): نمونه‌ی در حال اجرای یک ایمیج.

  • Dockerfile: فایل متنی شامل دستورات ساخت ایمیج.

  • Docker Hub: مخزن عمومی ایمیج‌های آماده.

  • Volume: فضای ذخیره‌سازی دائمی برای داده‌ها، مستقل از چرخه‌ی عمر کانتینر.

  • Network: شبکه‌ی ارتباطی بین کانتینرها.

دستورات پرکاربرد داکر

# دانلود یک ایمیج
docker pull nginx

# اجرای کانتینر در پس‌زمینه با نگاشت پورت
docker run -d -p 8080:80 nginx

# لیست کانتینرهای در حال اجرا
docker ps

# توقف و حذف کانتینر
docker stop <container-id>
docker rm <container-id>

# مشاهده لاگ‌ها
docker logs <container-id>

# اجرای دستور داخل کانتینر در حال اجرا
docker exec -it <container-id> bash

مثال عملی: ساخت اولین Dockerfile

برای یک اپلیکیشن Node.js ساده، فایلی به نام Dockerfile بسازید:

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

سپس ایمیج را بسازید و کانتینر را اجرا کنید:

docker build -t myapp:1.0 .
docker run -d -p 3000:3000 myapp:1.0

داکر کامپوز: مدیریت چند کانتینر با یک دستور

وقتی اپلیکیشن به چند سرویس نیاز دارد (مثلاً اپ + دیتابیس)، فایل docker-compose.yml همه را یکجا مدیریت می‌کند:

services:
  app:
    build: .
    ports:
      - "3000:3000"
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: secret
docker compose up -d

چرا داکر برای تیم‌های توسعه حیاتی است؟

  1. یکسان‌سازی محیط: توسعه، تست و پروداکشن دقیقاً یک محیط دارند.

  2. استقرار سریع: فاصله‌ی کامیت تا پروداکشن به چند دقیقه می‌رسد.

  3. مقیاس‌پذیری: اجرای ده‌ها نمونه از یک سرویس تنها با یک دستور.

  4. ایزولیشن: هر سرویس در کانتینر خودش اجرا می‌شود، بدون تداخل وابستگی‌ها.

جمع‌بندی

داکر امروز استاندارد بسته‌بندی و اجرای نرم‌افزار است. اگر هنوز با «روی سیستم من کار می‌کرد» دست‌وپنجه نرم می‌کنید، همین امروز اولین Dockerfile خود را بنویسید.

داکرDockerکانتینرآموزش داکرDevOps