مارک پلاس

تکنولوژی نوین اینترنتی

داکر (Docker)

دسته‌بندی‌ها

داکر (Docker)

🐳 داکر (Docker)

🔰 مقدمه

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


🧱 داکر چطور کار می‌کنه؟

به‌جای اینکه یک ماشین مجازی کامل ایجاد بشه، Docker از Container Engine استفاده می‌کنه که منابع سیستم رو به اشتراک می‌گذاره اما محیط ایزوله برای برنامه فراهم می‌کنه.

🔄 تفاوت Docker با Virtual Machine

ویژگیDockerVirtual Machine
سرعت راه‌اندازیچند ثانیهچند دقیقه
حجمسبکسنگین
مصرف منابعکمزیاد
عملکردنزدیک به بومیکمی کندتر
ایزوله‌سازیپروسه‌ایکامل (OS-level)

🎯 مزایای استفاده از Docker

  • 🔁 قابلیت تکرار و انتقال آسان پروژه‌ها

  • 📦 پکیج‌کردن برنامه با تمام وابستگی‌ها

  • ⚙️ راه‌اندازی ساده محیط توسعه و تولید

  • 🧪 اجرای تست‌ها در محیط ایزوله

  • 📤 استقرار سریع در سرویس‌های ابری

  • 🧼 کاهش مشکل "روی سیستم من کار می‌کنه!"


🧰 مفاهیم اصلی در Docker

مفهومتوضیح
Imageقالبی از برنامه + تنظیمات و وابستگی‌ها
Containerیک نسخه اجراشده از یک Image
Dockerfileفایلی برای ساخت Image دلخواه
Docker Hubمخزن آنلاین برای اشتراک‌گذاری Image‌ها
Volumeفضای ذخیره‌سازی پایدار برای دیتا
Networkبرقراری ارتباط بین کانتینرها

📄 نمونه Dockerfile ساده

Dockerfile
# استفاده از تصویر پایه FROM node:18 # تنظیم پوشه کاری WORKDIR /app # کپی فایل‌ها COPY package*.json ./ RUN npm install COPY . . # پورت قابل دسترسی EXPOSE 3000 # دستور اجرای برنامه CMD ["npm", "start"]

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

دستورتوضیح
docker build -t my-app .ساخت Image از Dockerfile
docker run -p 3000:3000 my-appاجرای کانتینر و نگاشت پورت
docker psنمایش کانتینرهای فعال
docker imagesلیست تصاویر موجود
docker stop <id>توقف کانتینر فعال
docker exec -it <id> bashورود به داخل کانتینر
docker-compose upاجرای چند کانتینر هم‌زمان (با فایل Compose)

⚙️ Docker Compose چیست؟

Docker Compose ابزاری برای اجرای چند سرویس با هم است. با تعریف سرویس‌ها در فایل docker-compose.yml، مثلاً برای یک اپ Node.js + MongoDB:

yaml
version: '3' services: web: build: . ports: - "3000:3000" db: image: mongo volumes: - mongo-data:/data/db volumes: mongo-data:

🧪 مثال واقعی: اجرای برنامه Python Flask با Docker

📁 فایل‌ها:

app.py

python
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "سلام از داکر!" if __name__ == '__main__': app.run(host='0.0.0.0')

requirements.txt

nginx
Flask

Dockerfile

Dockerfile
FROM python:3.10 WORKDIR /app COPY . . RUN pip install -r requirements.txt EXPOSE 5000 CMD ["python", "app.py"]

سپس:

bash
docker build -t flask-app . docker run -p 5000:5000 flask-app

🌍 کاربردهای Docker

  • محیط توسعه یکسان بین تیم‌ها

  • اجرای تست‌های خودکار در CI/CD

  • میکروسرویس‌ها

  • استقرار برنامه در Cloud (مانند AWS, Google Cloud, Heroku)

  • مجازی‌سازی سبک در IOT و Embedded Systems


🔐 امنیت در Docker

  • استفاده از Imageهای رسمی یا اسکن‌شده

  • اجرای کانتینرها با کاربر غیر ریشه (non-root)

  • محدود کردن منابع کانتینر

  • به‌روزرسانی مداوم Imageها و حذف کانتینرهای قدیمی


🧳 جمع‌بندی

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

محتوای مرتبط

پست‌های مرتبط