Docker و الحاويات أصبحا من الأدوات الأساسية في عالم إدارة السيرفرات وتطوير التطبيقات في 2026. سواء كنت مطور ويب أو مدير سيرفرات فإن Docker يُغيّر طريقة تشغيل ونشر التطبيقات بشكل جذري. بدلاً من تثبيت كل شيء مباشرة على السيرفر يمكنك تشغيل تطبيقاتك في حاويات معزولة وخفيفة وقابلة للنقل بين أي بيئة. في هذا الدليل الشامل سنشرح Docker من الصفر وحتى الاستخدام في بيئة الإنتاج.
محتويات المقال
- ← Docker و الحاويات: دليلك الشامل
- ← ما هو Docker وكيف يعمل؟
- ← الفرق بين Docker والأجهزة الافتراضية
- ← المفاهيم الأساسية في Docker
- ← تثبيت Docker على السيرفر
- ← أوامر Docker الأساسية
- ← كتابة Dockerfile احترافي
- ← Docker Compose لإدارة عدة حاويات
- ← تشغيل WordPress باستخدام Docker
- ← أفضل الممارسات لأمان Docker
- ← Docker في بيئة الإنتاج
- ← الخلاصة
🐳
Docker و الحاويات: دليلك الشامل
تعلّم كيف تستخدم Docker لتشغيل تطبيقاتك باحترافية وسرعة
ما هو Docker وكيف يعمل؟
Docker هو منصة مفتوحة المصدر تتيح لك تشغيل التطبيقات داخل حاويات (Containers) معزولة. الحاوية هي بيئة خفيفة تحتوي على التطبيق وجميع المكتبات والإعدادات التي يحتاجها للعمل بدون التأثير على النظام الأساسي أو التطبيقات الأخرى.
تخيّل أن لديك تطبيق يحتاج PHP 8.2 وتطبيق آخر يحتاج PHP 7.4 على نفس السيرفر. بدون Docker ستواجه تعارضات. مع Docker كل تطبيق يعمل في حاويته الخاصة بإصدار PHP المناسب له بدون أي تعارض.
Docker يعمل من خلال ثلاث مراحل:
- Build: بناء صورة (Image) تحتوي على التطبيق ومتطلباته
- Ship: مشاركة الصورة عبر Docker Hub أو Registry خاص
- Run: تشغيل الصورة كحاوية على أي سيرفر
الفرق بين Docker والأجهزة الافتراضية (VMs)
كثير من المبتدئين يخلطون بين Docker والأجهزة الافتراضية. الفرق الجوهري:
الأجهزة الافتراضية (VMs):
- تحتوي على نظام تشغيل كامل لكل جهاز افتراضي
- تستهلك موارد كبيرة (RAM و CPU ومساحة)
- بطيئة في الإقلاع (دقائق)
- عزل كامل على مستوى Hardware
حاويات Docker:
- تشارك نواة (Kernel) نظام التشغيل الأساسي
- خفيفة جداً (ميغابايتات بدلاً من جيغابايتات)
- تقلع في ثوانٍ
- عزل على مستوى العمليات (Process-level isolation)
- يمكن تشغيل عشرات الحاويات على نفس السيرفر
مثال عملي: سيرفر VPS بـ 4GB RAM يمكنه تشغيل 2-3 أجهزة افتراضية لكن يمكنه تشغيل 20-30 حاوية Docker بسهولة.
المفاهيم الأساسية في Docker
Image (الصورة)
قالب للقراءة فقط يحتوي على نظام التشغيل والتطبيق ومتطلباته. تُبنى من ملف Dockerfile وتُخزّن في Registry.
Container (الحاوية)
نسخة قابلة للتشغيل من الصورة. يمكنك تشغيل عدة حاويات من نفس الصورة. الحاوية لها دورة حياة: إنشاء وتشغيل وإيقاف وحذف.
Volume (وحدة التخزين)
مكان لتخزين البيانات بشكل دائم. بدون Volume تُفقد البيانات عند حذف الحاوية. Volumes تبقى حتى بعد حذف الحاوية.
Network (الشبكة)
Docker يُنشئ شبكات افتراضية تسمح للحاويات بالتواصل مع بعضها. يمكنك إنشاء شبكات معزولة لكل مشروع.
Docker Hub
مستودع عام للصور الجاهزة. يحتوي على آلاف الصور الرسمية مثل nginx وmysql وphp وwordpress وgitlab وغيرها.
تثبيت Docker على السيرفر
على Ubuntu 22.04 / 24.04
# إزالة أي نسخة قديمة
sudo apt remove docker docker-engine docker.io containerd runc
# تثبيت المتطلبات
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y
# إضافة مفتاح Docker الرسمي
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# إضافة مستودع Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# تثبيت Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# تشغيل Docker وتفعيله عند الإقلاع
sudo systemctl start docker
sudo systemctl enable docker
# إضافة المستخدم لمجموعة docker (لتجنب استخدام sudo)
sudo usermod -aG docker $USERعلى AlmaLinux / CentOS
# إضافة مستودع Docker
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# تثبيت Docker
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
# تشغيل Docker
sudo systemctl start docker && sudo systemctl enable docker# التحقق من التثبيت
docker --version
docker compose version
docker run hello-worldأوامر Docker الأساسية
# === إدارة الصور ===
docker pull nginx # تحميل صورة من Docker Hub
docker images # عرض الصور المحلية
docker rmi nginx # حذف صورة
docker build -t myapp:1.0 . # بناء صورة من Dockerfile
# === إدارة الحاويات ===
docker run -d --name web nginx # تشغيل حاوية في الخلفية
docker run -d -p 8080:80 nginx # تشغيل مع ربط المنفذ
docker ps # عرض الحاويات العاملة
docker ps -a # عرض جميع الحاويات
docker stop web # إيقاف حاوية
docker start web # تشغيل حاوية متوقفة
docker restart web # إعادة تشغيل
docker rm web # حذف حاوية
docker logs web # عرض سجلات الحاوية
docker logs -f web # متابعة السجلات مباشرة
docker exec -it web bash # الدخول داخل الحاوية
# === إدارة Volumes ===
docker volume create mydata # إنشاء volume
docker volume ls # عرض volumes
docker run -v mydata:/data nginx # ربط volume بحاوية
# === إدارة الشبكات ===
docker network create mynet # إنشاء شبكة
docker network ls # عرض الشبكات
docker run --network mynet nginx # تشغيل حاوية في شبكة محددة
# === التنظيف ===
docker system prune -a # حذف كل شيء غير مستخدم
docker container prune # حذف الحاويات المتوقفةكتابة Dockerfile احترافي
Dockerfile هو ملف نصي يحتوي على تعليمات بناء صورة Docker. إليك مثال لتطبيق PHP:
# استخدام صورة PHP الرسمية كقاعدة
FROM php:8.2-fpm-alpine
# تثبيت الإضافات المطلوبة
RUN apk add --no-cache
libpng-dev libjpeg-turbo-dev freetype-dev
&& docker-php-ext-configure gd --with-freetype --with-jpeg
&& docker-php-ext-install gd pdo pdo_mysql mysqli opcache
# نسخ إعدادات PHP المخصصة
COPY php.ini /usr/local/etc/php/conf.d/custom.ini
# تحديد مجلد العمل
WORKDIR /var/www/html
# نسخ ملفات التطبيق
COPY --chown=www-data:www-data . .
# تعريض المنفذ
EXPOSE 9000
# الأمر الافتراضي
CMD ["php-fpm"]نصائح لكتابة Dockerfile احترافي:
- استخدم صور Alpine (أصغر حجماً وأكثر أماناً)
- ادمج أوامر RUN في طبقة واحدة لتقليل حجم الصورة
- استخدم
.dockerignoreلاستثناء الملفات غير الضرورية - ضع التعليمات التي تتغير كثيراً في النهاية للاستفادة من الكاش
- لا تُشغّل التطبيق بصلاحيات root داخل الحاوية
Docker Compose لإدارة عدة حاويات
Docker Compose يتيح لك تعريف وتشغيل عدة حاويات معاً بملف YAML واحد. مثالي للتطبيقات التي تحتاج أكثر من خدمة (مثل ويب سيرفر + قاعدة بيانات + كاش):
# docker-compose.yml
version: '3.8'
services:
# سيرفر Nginx
web:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- app-data:/var/www/html
depends_on:
- php
restart: unless-stopped
# PHP-FPM
php:
build: .
volumes:
- app-data:/var/www/html
depends_on:
- db
restart: unless-stopped
# قاعدة البيانات
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: StrongRootPass123!
MYSQL_DATABASE: myapp
MYSQL_USER: appuser
MYSQL_PASSWORD: AppPass456!
volumes:
- db-data:/var/lib/mysql
restart: unless-stopped
# Redis للكاش
redis:
image: redis:alpine
restart: unless-stopped
volumes:
app-data:
db-data:# أوامر Docker Compose
docker compose up -d # تشغيل جميع الخدمات
docker compose down # إيقاف وحذف الحاويات
docker compose ps # عرض حالة الخدمات
docker compose logs -f # متابعة السجلات
docker compose restart php # إعادة تشغيل خدمة محددة
docker compose exec php bash # الدخول لحاوية محددة
docker compose pull # تحديث الصورتشغيل WordPress باستخدام Docker
إليك ملف Docker Compose كامل لتشغيل ووردبريس مع MySQL وNginx:
# docker-compose.yml لووردبريس
version: '3.8'
services:
wordpress:
image: wordpress:php8.2-fpm-alpine
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: WpSecurePass2026!
WORDPRESS_DB_NAME: wordpress
volumes:
- wp-data:/var/www/html
depends_on:
- db
restart: unless-stopped
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: RootPass2026!
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: WpSecurePass2026!
volumes:
- db-data:/var/lib/mysql
restart: unless-stopped
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- wp-data:/var/www/html
- ./nginx-wp.conf:/etc/nginx/conf.d/default.conf
depends_on:
- wordpress
restart: unless-stopped
volumes:
wp-data:
db-data:# تشغيل ووردبريس
docker compose up -d
# التحقق من عمل الخدمات
docker compose ps
# عرض سجلات ووردبريس
docker compose logs -f wordpress
# نسخ احتياطي لقاعدة البيانات
docker compose exec db mysqldump -u wpuser -pWpSecurePass2026! wordpress > backup.sqlأفضل الممارسات لأمان Docker
- لا تستخدم root: شغّل التطبيق بمستخدم عادي داخل الحاوية باستخدام
USERفي Dockerfile - استخدم صور رسمية: تجنب الصور غير الموثوقة من Docker Hub
- حدّث الصور باستمرار: ابقِ الصور محدّثة لسد الثغرات الأمنية
- لا تُخزّن أسرار في الصورة: استخدم Docker Secrets أو متغيرات البيئة
- حدّد الموارد: ضع حدود للـ CPU والـ RAM لكل حاوية
- استخدم شبكات معزولة: لا تعرّض خدمات داخلية (مثل قاعدة البيانات) للخارج
- فعّل logging: راقب سجلات الحاويات بشكل دوري
- افحص الصور: استخدم أدوات مثل
docker scoutلكشف الثغرات
# تحديد موارد الحاوية
docker run -d --name web
--memory="512m"
--cpus="1.0"
nginx
# فحص الصورة للثغرات
docker scout cves nginx:alpine
# عدم تشغيل بصلاحيات root
docker run -d --user 1000:1000 nginxDocker في بيئة الإنتاج (Production)
لاستخدام Docker في بيئة الإنتاج بشكل احترافي:
- استخدم Docker Compose: لتعريف البيئة بالكامل في ملف واحد
- فعّل restart policy: استخدم
restart: unless-stoppedأوrestart: always - استخدم Volumes للبيانات: لا تخزّن بيانات مهمة داخل الحاوية
- استخدم Reverse Proxy: ضع Nginx أو Traefik أمام تطبيقاتك
- النسخ الاحتياطي: انسخ Volumes وقواعد البيانات بشكل دوري
- المراقبة: استخدم Portainer لإدارة Docker بواجهة رسومية
- CI/CD: اربط Docker مع GitHub Actions لنشر تلقائي
# تثبيت Portainer لإدارة Docker بواجهة ويب
docker volume create portainer_data
docker run -d -p 9443:9443 --name portainer
--restart=always
-v /var/run/docker.sock:/var/run/docker.sock
-v portainer_data:/data
portainer/portainer-ce:latest
# الآن ادخل https://server-ip:9443 لإدارة Dockerالخلاصة
Docker غيّر طريقة تشغيل ونشر التطبيقات وأصبح أداة لا غنى عنها في 2026. سواء كنت تُشغّل موقع ووردبريس أو تطبيق SaaS أو مشروع AI فإن Docker يوفر لك بيئة معزولة وقابلة للنقل وسهلة الإدارة. ابدأ بالأساسيات وتدرّج حتى تصل لاستخدام Docker Compose في بيئة الإنتاج. المفتاح هو الممارسة العملية.
سيرفرات VPS جاهزة لـ Docker من مرام هوست
سيرفرات VPS بصلاحيات root كاملة ودعم Docker مع أداء عالي واستقرار ممتاز. ابدأ من هنا.
الأسئلة الشائعة حول Docker
هل Docker مجاني؟
نعم Docker Engine مجاني ومفتوح المصدر بالكامل. Docker Desktop مجاني للاستخدام الشخصي والشركات الصغيرة (أقل من 250 موظف). على السيرفرات تستخدم Docker Engine المجاني مباشرة.
هل Docker يبطئ الأداء؟
لا. Docker يعمل على مستوى نواة النظام ولا يضيف overhead كبير مثل الأجهزة الافتراضية. الأداء يكون 95-98% من الأداء الأصلي. الفرق غير محسوس عملياً.
هل يمكنني استخدام Docker على استضافة مشتركة؟
لا. Docker يحتاج صلاحيات root لذلك تحتاج VPS أو سيرفر مخصص. في مرام هوست توفر سيرفرات VPS بصلاحيات كاملة تدعم Docker.
ماذا يحدث للبيانات إذا حذفت الحاوية؟
البيانات داخل الحاوية تُحذف معها. لذلك يجب استخدام Docker Volumes لتخزين البيانات المهمة (قواعد البيانات والملفات المرفوعة) بشكل دائم خارج الحاوية.
مقالات ذات صلة
