انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

إدارة Docker مع Portainer: التحكم في الحاويات عبر واجهة الويب

تثبيت Portainer CE، إدارة Docker وKubernetes، نشر الـ stacks، إدارة الأحجام/الشبكات، تفويض المستخدمين، Webhooks وتكامل GitOps.

وقت القراءة: 13 دقيقة الاستضافة الذاتية
portainerdockerkubernetesواجهة ويبإدارة الحاوياتself-hosting

جدول المحتويات

إدارة Docker مع Portainer: التحكم في الحاويات عبر واجهة الويب

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

ما هو Portainer CE؟

Portainer Community Edition (CE) مجاني ومفتوح المصدر. الميزات الرئيسية:

  • إدارة الحاويات: التشغيل والإيقاف وإعادة التشغيل والحذف
  • إدارة الصور: عمليات pull وpush وbuild وtag
  • نشر الـ Stack: نشر ملفات Docker Compose من واجهة الويب
  • الأحجام/الشبكات: إدارة التخزين والشبكة
  • عرض السجلات: سجلات الحاويات في الوقت الفعلي
  • الوصول إلى وحدة التحكم: الاتصال بالحاويات عبر طرفية الويب
  • إدارة المستخدمين: التحكم في الوصول القائم على الأدوار

التثبيت

إنشاء Docker Volume

hljs bash
# إنشاء حجم لتخزين بيانات Portainer
docker volume create portainer_data

تثبيت Portainer CE

hljs bash
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

hljs yaml
# 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:
hljs bash
docker compose -f portainer-compose.yml up -d

اتصال Docker Socket

يتواصل Portainer مع Docker daemon عبر /var/run/docker.sock. يوفر الوصول إلى هذا الـ socket تحكماً كاملاً في Docker:

hljs bash
# التحقق من أذونات الـ socket
ls -la /var/run/docker.sock

# إضافة المستخدم إلى مجموعة docker (إذا لزم الأمر)
usermod -aG docker $USER

الوصول إلى Docker socket يعادل صلاحيات root. قم بتشغيل Portainer على شبكات موثوقة واستخدم كلمة مرور قوية.

نشر الـ Stacks (Docker Compose)

نشر Stack من واجهة الويب

  1. StacksAdd Stack
  2. أدخل اسم الـ stack
  3. الصق محتوى Docker Compose أو أدخل URL مستودع Git
  4. أضف متغيرات البيئة
  5. انقر على Deploy the stack
hljs yaml
# مثال: 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

  1. اختر خيار Repository عند إنشاء stack
  2. أدخل Git URL: https://github.com/user/repo
  3. حدد الفرع ومسار ملف compose
  4. فعّل GitOps updates للتحديثات التلقائية

إدارة الحاويات

hljs bash
# في واجهة Portainer:
# Containers → اختر الحاوية → Actions:
# - Start / Stop / Restart / Kill / Pause
# - Logs (في الوقت الفعلي)
# - Console (طرفية الويب)
# - Inspect (تفاصيل JSON)
# - Stats (استخدام CPU وRAM والشبكة)

طرفية الويب (Exec Console)

hljs bash
# Containers → انقر على اسم الحاوية
# تبويب Console → Connect
# اختر الـ shell: /bin/bash أو /bin/sh

إدارة المستخدمين والفرق

إنشاء المستخدمين

  1. SettingsUsersAdd User
  2. عيّن اسم المستخدم وكلمة المرور
  3. عيّن الدور: Administrator أو Standard User

إنشاء الفرق

hljs bash
# Settings → Teams → Add Team
# اسم الفريق: developers
# إضافة الأعضاء: مستخدم1، مستخدم2

التحديثات التلقائية مع Webhooks

hljs bash
# إنشاء webhook لـ Stack أو Service:
# Stack → اسم الـ Stack → Webhooks
# نسخ URL الـ webhook

# الاستخدام في GitHub Actions:
curl -X POST https://portainer.example.com/api/webhooks/WEBHOOK_TOKEN

Edge Agent (إدارة الخوادم البعيدة)

hljs bash
# تثبيت 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

hljs bash
# إيقاف وحذف الحاوية الحالية
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 من واجهة ويب واحدة. مفيد بشكل خاص للخوادم التي تشغّل خدمات متعددة.