دليل المطورين إلى Docker: الصور والحاويات وCompose

DevOps2026-10-09TryQuickToolBox

ربما سمعت عن Docker والحاويات، لكنك قد لا تكون متأكداً من كيفية دمجها في سير عمل التطوير اليومي. أو ربما جرّبت Docker، لكن مفاهيم الصور والحاويات وCompose تبدو مربكة. سيرشدك هذا الدليل إلى الأساسيات مع أمثلة عملية، حتى تبدأ في استخدام Docker بفعالية في مشاريعك.

ما هي صور وحاويات Docker؟

فكّر في صورة Docker كمخطط لتطبيقك. تحتوي على كل ما يلزم لتشغيل الكود: نظام التشغيل وبيئة التشغيل والمكتبات وملفات تطبيقك. الصور غير قابلة للتغيير وتُبنى من Dockerfile.

الحاوية هي نسخة قيد التشغيل من صورة. عند تشغيل حاوية، ينشئ Docker بيئة معزولة من الصورة. يمكنك تشغيل عدة حاويات من نفس الصورة، ولكل منها حالتها الخاصة.

الفروق الأساسية

الصورة الحاوية
قالب للقراءة فقط نسخة قابلة للتشغيل
تُبنى من Dockerfile تُنشأ من صورة
مخزّنة في السجل (registry) تعمل على المضيف
غير قابلة للتغيير مؤقتة (يمكن إيقافها وتشغيلها وحذفها)

بناء أول صورة Docker لك

لننشئ تطبيق Node.js بسيط ونحوّله إلى حاوية. ابدأ بـ Dockerfile في جذر مشروعك:

# Use an official Node.js runtime as a parent image
FROM node:18-alpine

# Set the working directory
WORKDIR /app

# Copy package.json and package-lock.json
COPY package*.json ./

# Install dependencies
RUN npm ci --only=production

# Copy the rest of the application code
COPY . .

# Expose the port the app runs on
EXPOSE 3000

# Define the command to run the app
CMD ["node", "server.js"]

ابنِ الصورة باستخدام:

docker build -t my-node-app .

شغّل حاوية من الصورة:

docker run -p 3000:3000 -d my-node-app

تطبيقك الآن متاح على http://localhost:3000.

إدارة الحاويات

إليك الأوامر الأساسية لإدارة الحاويات:

تبسيط التطبيقات متعددة الحاويات باستخدام Docker Compose

غالباً ما تحتاج التطبيقات الحقيقية إلى خدمات متعددة: خادم ويب، وقاعدة بيانات، وذاكرة تخزين مؤقت، وما إلى ذلك. إدارة هذه باستخدام أوامر docker run المنفصلة أمر شاق. يتيح لك Docker Compose تعريف وتشغيل تطبيقات متعددة الحاويات باستخدام ملف YAML.

أنشئ docker-compose.yml:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DB_HOST=db
    depends_on:
      - db
  db:
    image: postgres:15-alpine
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=mydb
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:

ابدأ جميع الخدمات باستخدام:

docker compose up -d

أوقفها واحذفها باستخدام:

docker compose down

أفضل الممارسات للتطوير

الأسئلة الشائعة

ما الفرق بين الصورة والحاوية؟

الصورة قالب للقراءة فقط يحدد التطبيق وتبعياته. الحاوية هي نسخة قيد التشغيل من صورة، مع طبقة قابلة للكتابة في الأعلى.

هل يمكنني استخدام Docker Compose في الإنتاج؟

صُمم Docker Compose بشكل أساسي للتطوير والاختبار. للإنتاج، فكّر في أدوات التنسيق مثل Kubernetes أو Docker Swarm.

كيف أحافظ على استمرارية البيانات في Docker؟

استخدم وحدات التخزين (volumes) أو عمليات الربط (bind mounts). تُدار وحدات التخزين بواسطة Docker وهي الطريقة المفضلة للحفاظ على البيانات التي تُنشئها الحاويات.

هل أنت مستعد لتحويل تطبيقك إلى حاوية؟ إذا كنت بحاجة إلى تحويل الوثائق أو الأدلة إلى PDF لفريقك، جرّب محوّل Word إلى PDF لمشاركة مستندات مصقولة.