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

DevOps2026-10-02TryQuickToolBox

ربما سمعت عن Docker وكيف يمكنه تبسيط سير عمل التطوير الخاص بك. ولكن عند أول لقاء مع مصطلحات مثل الصور والحاويات وDocker Compose، قد يبدو الأمر مربكًا. يزيل هذا الدليل الغموض ويوضح لك بالضبط كيفية استخدام Docker بفعالية في مشاريعك.

ما هو Docker ولماذا يجب أن تهتم؟

Docker هو منصة تقوم بتغليف تطبيقك وتبعياته في وحدة موحدة تسمى حاوية. الحاويات خفيفة الوزن ومحمولة ومعزولة عن بعضها البعض. إنها تحل مشكلة "يعمل على جهازي" الكلاسيكية من خلال ضمان تشغيل تطبيقك بنفس الطريقة في كل مكان.

على عكس الأجهزة الافتراضية، تشترك الحاويات في نواة نظام التشغيل المضيف، مما يجعلها أسرع في البدء وأكثر كفاءة. هذا هو السبب في أن Docker أصبح أساسيًا في خطوط التطوير والنشر الحديثة.

الصور مقابل الحاويات: اللبنات الأساسية

الصورة هي قالب للقراءة فقط يحتوي على كود تطبيقك ووقت التشغيل والمكتبات والإعدادات. الحاوية هي نسخة قيد التشغيل من صورة. فكر في الصورة كفئة (class) والحاوية ككائن (object).

يمكنك إنشاء الصور باستخدام Dockerfile. إليك مثال بسيط لتطبيق Node.js:

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

كل سطر في Dockerfile ينشئ طبقة. يتم تخزين الطبقات مؤقتًا، لذا تكون عمليات إعادة البناء أسرع عندما تتغير الخطوات اللاحقة فقط.

أوامر Docker الشائعة

Docker Compose: إدارة التطبيقات متعددة الحاويات

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

إليك ملف docker-compose.yml لتطبيق Node.js مع PostgreSQL و Redis:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/mydb
      - REDIS_URL=redis://cache:6379
    depends_on:
      - db
      - cache
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
  cache:
    image: redis:7
volumes:
  pgdata:

قم بتشغيل docker compose up وستبدأ جميع الخدمات معًا. يضمن depends_on بدء قاعدة البيانات وذاكرة التخزين المؤقت قبل خدمة الويب.

أوامر Compose الرئيسية

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

متى تستخدم Docker (ومتى لا تستخدمه)

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

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

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

الصورة هي قالب ثابت؛ الحاوية هي نسخة قيد التشغيل من تلك الصورة. يمكنك تشغيل حاويات متعددة من نفس الصورة.

هل أحتاج إلى Docker Compose لحاوية واحدة؟

لا، لحاوية واحدة يمكنك استخدام docker run. يكون Compose مفيدًا عندما يكون لديك خدمات متعددة تحتاج إلى التواصل.

كيف أحافظ على البيانات في Docker؟

استخدم وحدات التخزين (volumes) أو bind mounts. يتم إدارة وحدات التخزين بواسطة Docker وهي مثالية لقواعد البيانات؛ تقوم bind mounts بربط دليل المضيف داخل الحاوية، وهي مفيدة للتطوير.

هل أنت مستعد لتحسين تطبيقاتك المعتمدة على Docker؟ إذا كنت تعمل مع سجلات Nginx داخل الحاويات، جرب محلل سجلات Nginx الخاص بنا لتحليل السجلات بسرعة.