إدارة Docker مع Portainer: التحكم في الحاويات عبر واجهة الويب
تثبيت Portainer CE، إدارة Docker وKubernetes، نشر الـ stacks، إدارة الأحجام/الشبكات، تفويض المستخدمين، Webhooks وتكامل GitOps.
جدول المحتويات
إدارة Docker مع Portainer: التحكم في الحاويات عبر واجهة الويب
Portainer هو منصة إدارة حاويات مفتوحة المصدر تتيح لك إدارة بيئات Docker وKubernetes عبر متصفح الويب. دون الحاجة إلى معرفة سطر الأوامر، يمكنك بسهولة تشغيل الحاويات وإيقافها وعرض السجلات ونشر الـ stacks.
ما هو Portainer CE؟
Portainer Community Edition (CE) مجاني ومفتوح المصدر. الميزات الرئيسية:
- إدارة الحاويات: التشغيل والإيقاف وإعادة التشغيل والحذف
- إدارة الصور: عمليات pull وpush وbuild وtag
- نشر الـ Stack: نشر ملفات Docker Compose من واجهة الويب
- الأحجام/الشبكات: إدارة التخزين والشبكة
- عرض السجلات: سجلات الحاويات في الوقت الفعلي
- الوصول إلى وحدة التحكم: الاتصال بالحاويات عبر طرفية الويب
- إدارة المستخدمين: التحكم في الوصول القائم على الأدوار
التثبيت
إنشاء Docker Volume
# إنشاء حجم لتخزين بيانات Portainer
docker volume create portainer_data
تثبيت Portainer CE
docker run -d \
--name portainer \
--restart=always \
-p 8000:8000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
بعد التثبيت:
https://IP_الخادم:9443
عند تسجيل الدخول الأول، تحتاج إلى تعيين كلمة مرور المسؤول. إذا لم تسجل الدخول خلال 5 دقائق، يحتاج Portainer إلى إعادة التشغيل لأسباب أمنية.
التثبيت مع Docker Compose
# portainer-compose.yml
version: '3.8'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "8000:8000"
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
security_opt:
- no-new-privileges:true
volumes:
portainer_data:
docker compose -f portainer-compose.yml up -d
اتصال Docker Socket
يتواصل Portainer مع Docker daemon عبر /var/run/docker.sock. يوفر الوصول إلى هذا الـ socket تحكماً كاملاً في Docker:
# التحقق من أذونات الـ socket
ls -la /var/run/docker.sock
# إضافة المستخدم إلى مجموعة docker (إذا لزم الأمر)
usermod -aG docker $USER
الوصول إلى Docker socket يعادل صلاحيات root. قم بتشغيل Portainer على شبكات موثوقة واستخدم كلمة مرور قوية.
نشر الـ Stacks (Docker Compose)
نشر Stack من واجهة الويب
- Stacks → Add Stack
- أدخل اسم الـ stack
- الصق محتوى Docker Compose أو أدخل URL مستودع Git
- أضف متغيرات البيئة
- انقر على Deploy the stack
# مثال: WordPress Stack
version: '3.8'
services:
wordpress:
image: wordpress:latest
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
depends_on:
- db
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
volumes:
- db_data:/var/lib/mysql
volumes:
wordpress_data:
db_data:
نشر Stack من مستودع Git
- اختر خيار Repository عند إنشاء stack
- أدخل Git URL:
https://github.com/user/repo - حدد الفرع ومسار ملف compose
- فعّل GitOps updates للتحديثات التلقائية
إدارة الحاويات
# في واجهة Portainer:
# Containers → اختر الحاوية → Actions:
# - Start / Stop / Restart / Kill / Pause
# - Logs (في الوقت الفعلي)
# - Console (طرفية الويب)
# - Inspect (تفاصيل JSON)
# - Stats (استخدام CPU وRAM والشبكة)
طرفية الويب (Exec Console)
# Containers → انقر على اسم الحاوية
# تبويب Console → Connect
# اختر الـ shell: /bin/bash أو /bin/sh
إدارة المستخدمين والفرق
إنشاء المستخدمين
- Settings → Users → Add User
- عيّن اسم المستخدم وكلمة المرور
- عيّن الدور: Administrator أو Standard User
إنشاء الفرق
# Settings → Teams → Add Team
# اسم الفريق: developers
# إضافة الأعضاء: مستخدم1، مستخدم2
التحديثات التلقائية مع Webhooks
# إنشاء webhook لـ Stack أو Service:
# Stack → اسم الـ Stack → Webhooks
# نسخ URL الـ webhook
# الاستخدام في GitHub Actions:
curl -X POST https://portainer.example.com/api/webhooks/WEBHOOK_TOKEN
Edge Agent (إدارة الخوادم البعيدة)
# تثبيت Edge Agent على الخادم البعيد:
docker run -d \
--name portainer_edge_agent \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-v /:/host \
-v portainer_agent_data:/data \
-e EDGE=1 \
-e EDGE_ID=EDGE_ID_الخاص_بك \
-e EDGE_KEY=EDGE_KEY_الخاص_بك \
-e EDGE_INSECURE_POLL=1 \
portainer/agent:latest
تحديث Portainer
# إيقاف وحذف الحاوية الحالية
docker stop portainer
docker rm portainer
# سحب أحدث صورة
docker pull portainer/portainer-ce:latest
# إعادة التشغيل (البيانات محفوظة في الحجم)
docker run -d \
--name portainer \
--restart=always \
-p 8000:8000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
بتثبيت Portainer على خوادم REXE، يمكنك إدارة جميع حاويات Docker من واجهة ويب واحدة. مفيد بشكل خاص للخوادم التي تشغّل خدمات متعددة.
مقالات ذات صلة
تثبيت Coolify: نشر التطبيقات مع PaaS المستضاف ذاتياً
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
تثبيت Nextcloud: التخزين السحابي المستضاف ذاتياً والتعاون
تثبيت Nextcloud مع Docker، تهيئة Apache/Nginx، إعداد قاعدة البيانات، شهادة SSL، مزامنة الملفات، متجر التطبيقات وتحسين الأداء.
تثبيت Uptime Kuma: مراقبة وقت التشغيل المستضافة ذاتياً
تثبيت Uptime Kuma مع Docker، مراقبة HTTP/TCP/DNS/ping، تكاملات الإشعارات (Telegram، Discord، البريد الإلكتروني)، إنشاء صفحة الحالة وتهيئة التنبيهات.