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

DevOps2026-09-11TryQuickToolBox

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

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

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

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

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

قبل أن تبدأ، تحتاج إلى فهم الفرق بين صورة وحاوية.

باختصار: الصورة هي الوصفة، والحاوية هي الطبق الذي تطبخه منها.

أوامر Docker الأساسية للمطورين

إليك الأوامر التي ستستخدمها في أغلب الأحيان:

  1. docker pull <image> – تنزيل صورة من سجل مثل Docker Hub.
  2. docker images – عرض جميع الصور المحلية.
  3. docker run <image> – إنشاء وبدء حاوية من صورة.
  4. docker ps – عرض الحاويات قيد التشغيل. أضف -a لرؤية جميع الحاويات، بما في ذلك المتوقفة.
  5. docker stop <container> – إيقاف حاوية قيد التشغيل بلطف.
  6. docker rm <container> – إزالة حاوية متوقفة.
  7. docker rmi <image> – إزالة صورة.
  8. docker exec -it <container> bash – فتح صدفة تفاعلية داخل حاوية قيد التشغيل.

على سبيل المثال، لتشغيل خادم ويب Nginx بسيط:

docker run -d -p 8080:80 nginx

هذا يسحب صورة nginx (إذا لم تكن موجودة بالفعل)، ويبدأ حاوية في الوضع المنفصل (-d)، ويربط المنفذ 8080 على المضيف بالمنفذ 80 في الحاوية (-p 8080:80).

بناء صورتك الخاصة باستخدام Dockerfile

لتغليف تطبيقك، تقوم بإنشاء Dockerfile - ملف نصي يحتوي على تعليمات. إليك مثال بسيط لتطبيق Node.js:

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

# Set the working directory
WORKDIR /usr/src/app

# Copy package.json and install dependencies
COPY package*.json ./
RUN npm install

# 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", "app.js"]

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

docker build -t my-node-app .

ثم قم بتشغيلها:

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

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

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

أنشئ ملف docker-compose.yml:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:

ثم ابدأ كل شيء باستخدام:

docker compose up -d

يتولى Compose التعامل مع الشبكات والأحجام والتبعيات نيابة عنك. لإيقاف وإزالة الحاويات والشبكات والأحجام، قم بتشغيل docker compose down.

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

المزالق الشائعة وكيفية تجنبها

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

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

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

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

ليس بالضرورة. بالنسبة للتطبيقات البسيطة، docker run كافٍ. ومع ذلك، يجعل Compose من الأسهل إدارة متغيرات البيئة والأحجام والشبكات، حتى لخدمة واحدة، ويبسط التوسع لاحقًا.

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

استخدم الأحجام. يتم تخزين الأحجام خارج نظام ملفات الحاوية وتستمر حتى إذا تم حذف الحاوية. في Compose، حدد حجمًا وقم بتركيبه على مسار في الحاوية (مثل volumes: - mydata:/var/lib/data).

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