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

DevOps2026-10-11TryQuickToolBox

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

ما هو Docker؟

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

الصور مقابل الحاويات: المخطط والنسخة قيد التشغيل

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

يتم بناء الصور من Dockerfile، وهو ملف نصي يحتوي على تعليمات. يتم تشغيل الحاويات باستخدام docker run.

الاختلافات الرئيسية

الصورةالحاوية
قالب للقراءة فقطنسخة قابلة للتشغيل
تُبنى باستخدام docker buildتُشغل باستخدام docker run
مخزنة في السجل (مثل Docker Hub)تعمل على المضيف
نظام ملفات متعدد الطبقاتطبقة قابلة للكتابة في الأعلى

بناء صورتك الأولى

لنقم بتحويل تطبيق 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 install dependencies
COPY package*.json ./
RUN npm install

# Copy the rest of the application
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 .

يقوم العلم -t بتسمية الصورة ووضع وسم لها. تشير النقطة . في النهاية إلى سياق البناء (الدليل الحالي).

تشغيل الحاويات

ابدأ حاوية من صورتك:

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

تحقق من الحاويات قيد التشغيل باستخدام docker ps. أوقف الحاوية باستخدام docker stop my-app.

إدارة البيانات باستخدام Volumes

الحاويات مؤقتة؛ تُفقد البيانات الموجودة بداخلها عند إزالة الحاوية. للاحتفاظ بالبيانات، استخدم volumes. على سبيل المثال، للاحتفاظ ببيانات قاعدة البيانات:

docker run -v my-db-data:/var/lib/mysql -d mysql:8

يؤدي هذا إلى إنشاء volume مسمى my-db-data يبقى بعد إعادة تشغيل الحاوية وإزالتها.

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

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

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

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

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

docker compose up -d

يقوم Compose ببناء صورة الويب، وبدء قاعدة البيانات، وربطهما على شبكة مشتركة. يضمن depends_on بدء قاعدة البيانات قبل خدمة الويب.

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

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

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

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

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

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

استخدم volumes. يتم تخزين volumes المسمية (مثل docker run -v my-vol:/data) خارج نظام ملفات الحاوية وتبقى عبر إعادة تشغيل الحاوية وإزالتها.

متى يجب استخدام Docker Compose؟

استخدم Compose عندما يتكون تطبيقك من خدمات متعددة (مثل الويب + قاعدة البيانات) تحتاج إلى العمل معًا. يبسط التنسيق للتطوير والاختبار.

هل أنت مستعد لتحويل مشروعك التالي إلى حاوية؟ ابدأ بكتابة Dockerfile بسيط وتشغيل حاويتك الأولى. لمزيد من أدوات المطورين، تحقق من TryQuickToolBox's JSON Formatter للتحقق من استجابات API أثناء اختبار خدماتك المحواة.