🐳

10 أوامر Docker يحتاجها كل مدير سيرفر يومياً في 2026

دليل عملي لأهم أوامر Docker مع أمثلة حقيقية وحالات استخدام يومية

لماذا أوامر Docker مهمة

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

وفقاً لـ Docker الرسمي، أكثر من 20 مليون مطور يستخدمون Docker شهرياً. في هذا الدليل، سنتناول أهم 10 أوامر Docker التي ستستخدمها يومياً كمدير سيرفر، مع أمثلة عملية وحالات استخدام حقيقية.

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

1. docker run – تشغيل الحاويات

أمر docker run هو أول أوامر Docker التي ستتعلمها وأكثرها استخداماً. يقوم بإنشاء حاوية جديدة من صورة (image) وتشغيلها.

الصيغة الأساسية

# تشغيل حاوية بسيطة
docker run nginx

# تشغيل في الخلفية مع ربط المنافذ
docker run -d --name my-nginx -p 80:80 nginx:latest

# تشغيل مع متغيرات البيئة وربط مجلد
docker run -d 
  --name my-wordpress 
  -p 8080:80 
  -e WORDPRESS_DB_HOST=db 
  -e WORDPRESS_DB_USER=wp_user 
  -e WORDPRESS_DB_PASSWORD=secure_pass 
  -v wordpress_data:/var/www/html 
  wordpress:latest

خيارات مهمة

  • -d: تشغيل في الخلفية (detached mode)
  • –name: تسمية الحاوية لسهولة الإدارة
  • -p host:container: ربط المنافذ
  • -v: ربط مجلد أو volume للبيانات الدائمة
  • -e: تعيين متغيرات البيئة
  • –restart unless-stopped: إعادة تشغيل تلقائية
  • –memory 512m: تحديد الذاكرة القصوى

من أهم أوامر Docker التي يجب إتقانها، حيث أن خيارات docker run تحدد كيفية عمل الحاوية بالكامل.

2. docker ps و docker logs – المراقبة

من أوامر Docker الأساسية للمراقبة اليومية. docker ps يعرض الحاويات العاملة، و docker logs يعرض سجلات الحاوية.

عرض الحاويات

# عرض الحاويات العاملة
docker ps

# عرض جميع الحاويات (بما فيها المتوقفة)
docker ps -a

# عرض مُخصص مع تنسيق
docker ps --format "table {{.Names}}t{{.Status}}t{{.Ports}}t{{.Size}}"

# فلترة حسب الحالة
docker ps --filter "status=exited"

قراءة السجلات

# آخر 100 سطر من السجلات
docker logs --tail 100 my-nginx

# متابعة السجلات مباشرة (مثل tail -f)
docker logs -f my-nginx

# سجلات بتاريخ محدد
docker logs --since "2026-04-24T00:00:00" my-nginx

# سجلات مع الطوابع الزمنية
docker logs -t --tail 50 my-nginx

نصيحة: استخدم docker logs -f أثناء تشخيص المشاكل لمتابعة السجلات في الوقت الحقيقي.

3. docker exec – تنفيذ أوامر داخل الحاوية

docker exec من أوامر Docker الضرورية لتشخيص المشاكل وإجراء تعديلات داخل الحاوية أثناء تشغيلها.

# فتح shell تفاعلي داخل الحاوية
docker exec -it my-nginx bash

# تنفيذ أمر مباشر
docker exec my-nginx nginx -t

# التحقق من حالة MySQL داخل حاوية
docker exec my-mysql mysqladmin -u root -p status

# عرض متغيرات البيئة
docker exec my-app env

# نسخ ملف من الحاوية إلى الجهاز المضيف
docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf

ملاحظة مهمة: بعض الصور الخفيفة (مثل Alpine) لا تحتوي على bash. في هذه الحالة استخدم sh بدلاً منه:

docker exec -it my-container sh

4. docker build – بناء الصور

docker build يستخدم لبناء صور Docker مخصصة من ملف Dockerfile. هذا من أوامر Docker الأساسية لأي مطور أو مدير سيرفر يحتاج لتخصيص بيئة التشغيل.

مثال: بناء صورة لتطبيق Node.js

# Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
# بناء الصورة
docker build -t my-app:1.0 .

# بناء مع تحديد Dockerfile مختلف
docker build -f Dockerfile.production -t my-app:prod .

# بناء بدون استخدام الكاش
docker build --no-cache -t my-app:latest .

# بناء مع build arguments
docker build --build-arg NODE_ENV=production -t my-app:prod .

لتقليل حجم الصورة، استخدم multi-stage builds وصور Alpine. صورة Node.js العادية حوالي 900MB، بينما node:20-alpine حوالي 130MB فقط.

5. docker compose – إدارة تطبيقات متعددة الحاويات

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

مثال: WordPress مع MySQL و Redis

# docker-compose.yml
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: secure_pass
    volumes:
      - wp_data:/var/www/html
    depends_on:
      - db
      - redis

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root_pass
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: secure_pass
    volumes:
      - db_data:/var/lib/mysql

  redis:
    image: redis:alpine
    volumes:
      - redis_data:/data

volumes:
  wp_data:
  db_data:
  redis_data:

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

# تشغيل جميع الخدمات
docker compose up -d

# إيقاف جميع الخدمات
docker compose down

# إعادة بناء وتشغيل
docker compose up -d --build

# عرض حالة الخدمات
docker compose ps

# عرض سجلات خدمة محددة
docker compose logs -f wordpress

# تشغيل أمر في خدمة محددة
docker compose exec db mysql -u root -p

6. docker volume – إدارة البيانات الدائمة

من أوامر Docker المهمة لإدارة البيانات التي يجب أن تبقى حتى بعد حذف الحاوية. بدون volumes، تُفقد جميع البيانات عند إزالة الحاوية.

# إنشاء volume
docker volume create my_data

# عرض جميع الـ volumes
docker volume ls

# فحص تفاصيل volume
docker volume inspect my_data

# حذف volume غير مستخدم
docker volume rm my_data

# حذف جميع الـ volumes غير المستخدمة
docker volume prune

# نسخ احتياطي لـ volume
docker run --rm -v my_data:/source -v $(pwd):/backup alpine tar czf /backup/my_data_backup.tar.gz -C /source .

قاعدة ذهبية: استخدم دائماً named volumes بدلاً من bind mounts لقواعد البيانات في بيئة الإنتاج. هذا يضمن أداء أفضل وسهولة في النسخ الاحتياطي.

7. docker network – إدارة الشبكات

docker network من أوامر Docker التي تتحكم في كيفية تواصل الحاويات مع بعضها ومع العالم الخارجي. فهم الشبكات ضروري لبناء تطبيقات آمنة.

# إنشاء شبكة مخصصة
docker network create --driver bridge my_network

# عرض الشبكات
docker network ls

# ربط حاوية بشبكة
docker network connect my_network my-container

# فصل حاوية من شبكة
docker network disconnect my_network my-container

# فحص تفاصيل الشبكة
docker network inspect my_network

# تشغيل حاوية في شبكة محددة
docker run -d --name my-app --network my_network my-app:latest

نصيحة أمنية: أنشئ شبكات منفصلة لكل تطبيق. لا تربط حاوية قاعدة البيانات بشبكة يمكن الوصول إليها من الخارج. استخدم شبكة داخلية (internal) لقواعد البيانات:

docker network create --internal db_network

8. docker system prune – تنظيف الموارد

مع مرور الوقت، يتراكم الكثير من الصور والحاويات المتوقفة والشبكات غير المستخدمة. docker system prune من أوامر Docker الضرورية للحفاظ على مساحة القرص.

# تنظيف شامل (حاويات متوقفة، شبكات غير مستخدمة، صور بدون حاويات)
docker system prune

# تنظيف شامل مع الـ volumes (حذر!)
docker system prune --volumes

# تنظيف الصور غير المستخدمة فقط
docker image prune -a

# عرض المساحة المستخدمة
docker system df

# عرض تفصيلي
docker system df -v

يمكنك أتمتة التنظيف بإضافة cron job:

# تنظيف أسبوعي كل يوم أحد الساعة 3 صباحاً
0 3 * * 0 docker system prune -f --filter "until=168h"

9. docker inspect – الفحص التفصيلي

docker inspect من أوامر Docker المتقدمة التي تعرض معلومات تفصيلية عن أي كائن Docker (حاوية، صورة، شبكة، volume). مفيد جداً لتشخيص المشاكل.

# فحص حاوية
docker inspect my-nginx

# الحصول على IP الحاوية
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-nginx

# عرض mount points
docker inspect -f '{{json .Mounts}}' my-nginx | python3 -m json.tool

# التحقق من إعدادات إعادة التشغيل
docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' my-nginx

# عرض متغيرات البيئة
docker inspect -f '{{range .Config.Env}}{{println .}}{{end}}' my-nginx

# التحقق من health check
docker inspect -f '{{json .State.Health}}' my-nginx | python3 -m json.tool

تلميح: استخدم –format مع Go templates لاستخراج معلومات محددة بدلاً من قراءة JSON الكامل. هذا مفيد بشكل خاص في السكريبتات الآلية.

نصائح لتسريع العمل مع Docker

بعد إتقان أوامر Docker الأساسية، إليك نصائح متقدمة ستجعل عملك اليومي أسرع وأكثر إنتاجية:

Aliases مفيدة

أضف هذه الاختصارات إلى ملف ~/.bashrc أو ~/.zshrc:

# اختصارات أوامر Docker
alias dps='docker ps --format "table {{.Names}}t{{.Status}}t{{.Ports}}"'
alias dlog='docker logs -f --tail 100'
alias dex='docker exec -it'
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias dcl='docker compose logs -f'
alias dprune='docker system prune -f --filter "until=168h"'

Health Checks

أضف health checks لحاوياتك للتأكد من أنها تعمل فعلاً:

docker run -d --name my-nginx 
  --health-cmd="curl -f http://localhost/ || exit 1" 
  --health-interval=30s 
  --health-timeout=10s 
  --health-retries=3 
  nginx:latest

Resource Limits

حدد دائماً الموارد القصوى لكل حاوية لمنع استنزاف موارد السيرفر:

docker run -d --name my-app 
  --memory=512m 
  --cpus=1.0 
  --memory-swap=1g 
  my-app:latest

راجع وثائق Docker CLI الرسمية للاطلاع على جميع الخيارات المتاحة لكل أمر.

الخلاصة

أوامر Docker العشرة التي استعرضناها تمثل الأساس الذي ستبني عليه مهاراتك في إدارة الحاويات. إليك ملخصاً سريعاً:

  • docker run: تشغيل الحاويات مع الخيارات اللازمة
  • docker ps + logs: المراقبة وتتبع المشاكل
  • docker exec: التفاعل مع الحاويات العاملة
  • docker build: بناء صور مخصصة
  • docker compose: إدارة تطبيقات متعددة الحاويات
  • docker volume: إدارة البيانات الدائمة
  • docker network: التحكم في الشبكات
  • docker system prune: تنظيف الموارد
  • docker inspect: التشخيص التفصيلي

ابدأ بحفظ الاختصارات (aliases) واستخدم أوامر Docker يومياً حتى تصبح طبيعة ثانية. مع الوقت، ستجد أن إدارة السيرفرات باستخدام Docker أسرع وأكثر موثوقية من الطرق التقليدية.

سيرفرات VPS جاهزة لـ Docker من مرام هوست

سيرفرات VPS عالية الأداء مع Docker مُثبّت مسبقاً ودعم فني متخصص. طبّق أوامر Docker فوراً بدون إعداد. ابدأ من هنا.

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

ما الفرق بين docker compose و docker-compose (بشرطة)؟

docker-compose (بشرطة) هو الإصدار القديم المكتوب بـ Python وتم إيقافه. docker compose (بدون شرطة) هو الإصدار الحديث المدمج مع Docker CLI مباشرة وهو أسرع وأكثر استقراراً. في 2026، استخدم دائماً docker compose بدون شرطة.

كيف أحدّث حاوية Docker بدون توقف؟

استخدم docker compose مع الأمر: docker compose pull ثم docker compose up -d. هذا يسحب الصورة الجديدة ويعيد إنشاء الحاوية المحدّثة فقط. فترة التوقف تكون ثوانٍ فقط. لتحقيق zero downtime، استخدم Docker Swarm أو Kubernetes مع rolling updates.

هل Docker آمن للاستخدام في بيئة الإنتاج؟

نعم، Docker آمن إذا اتبعت أفضل الممارسات: لا تشغّل الحاويات كـ root، استخدم صوراً رسمية فقط، حدّد الموارد القصوى لكل حاوية، وأنشئ شبكات منفصلة. أوامر Docker مثل docker inspect و docker logs تساعدك في مراقبة الأمان باستمرار.

كم مساحة يحتاج Docker على السيرفر؟

Docker نفسه يحتاج أقل من 500MB. لكن الصور والحاويات تحتاج مساحة إضافية حسب التطبيقات. صورة Nginx حوالي 140MB، وWordPress حوالي 600MB. استخدم docker system df لمراقبة المساحة المستخدمة واستخدم docker system prune بانتظام للتنظيف.

مقالات ذات صلة

مقالات ذات صلة