HELPER VPS

تثبيت Docker على VPS: Ubuntu وDebian وAlmaLinux وCompose

إذا ثبّت من مستودع Docker الرسمي تحصل على أحدث Docker Engine وإضافة Compose، وتنتهي التحديثات اللاحقة بتحديث واحد للنظام. جمعنا بالترتيب الأوامر حسب نظام التشغيل والإعدادات التي يجب ضبطها بعد التثبيت.

الطريقة الأسرع: إنشاء خادم بصورة Docker

إذا كنت تنشئ خادمًا جديدًا فأسرع طريقة هي اختيار Docker من قائمة الصور. يبدأ وعليه Docker Engine وDocker Compose مثبّتان فوق Ubuntu 24.04 LTS، فتنفّذ docker compose up فور تسجيل الدخول. والتعريف بالتطبيق والأحجام الموصى بها في صفحة Docker VPS.

إذا أردت إضافة Docker إلى خادم تستخدمه بالفعل أو استخدام نظام تشغيل آخر مثل Debian أو AlmaLinux فثبّته بنفسك بالترتيب أدناه. جميع الأوامر على أساس الاتصال بحساب root. وإذا اتصلت كمستخدم عادي فأضف sudo قبل الأوامر.

ما تتحقق منه قبل التثبيت

يعمل Docker على خوادم بأي حجم. بالنسبة للمشاريع الشخصية التي تشغل بضع حاويات، تكفي الخطة العامة الصغيرة ذات الذاكرة 12GB؛ لتشغيل قاعدة بيانات وخادم ويب وتخزين مؤقت معًا، توفر الذاكرة 24GB أو أكثر مساحة كافية. إذا كنت تقوم بتنزيل وبناء الصور كثيرًا، فإن NVMe VPS بقرص سريع يُحدث فرقًا ملحوظًا.

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

Ubuntu, Debian
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; done

تثبيت Docker على Ubuntu 24.04

الخطوة 1. إضافة مفتاح المستودع وعنوانه

Ubuntu 24.04
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list

الخطوة 2. تثبيت Docker Engine وCompose

Ubuntu 24.04
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

عند انتهاء التثبيت تعمل خدمة Docker تلقائيًا، وتعمل معه حتى لو أعيد تشغيل الخادم. وتعمل الأوامر نفسها كما هي على Ubuntu 22.04 و26.04 أيضًا. ويُقرأ اسم الإصدار الذي يدخل في عنوان المستودع تلقائيًا من /etc/os-release.

تثبيت Docker على Debian 13

Debian بالترتيب نفسه مثل Ubuntu ولا يتغير إلا عنوان المستودع إلى linux/debian. وتستخدم الأوامر نفسها على Debian 12 أيضًا.

Debian 13
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

تثبيت Docker على AlmaLinux 10

يستخدم AlmaLinux وRocky Linux مستودع RHEL الخاص بـ Docker. نظّف أولًا لكي لا يتداخل مع Podman المضمّن أساسًا ثم ثبّت. والأوامر نفسها على AlmaLinux 9 وRocky Linux 9 و10 أيضًا.

AlmaLinux 10
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker

عند التثبيت لأول مرة إذا سُئلت هل تقبل مفتاح توقيع المستودع فاضغط y. وفي عائلة RHEL لا تعمل الخدمة تلقائيًا بعد التثبيت، فشغّلها الآن واجعلها تعمل عند الإقلاع أيضًا عبر السطر الأخير systemctl enable --now docker.

التحقق من التثبيت وأول حاوية

شغّل حاوية اختبار مرة بالأمر أدناه. إذا ظهرت رسالة تبدأ بـ Hello from Docker فالمحرك وتنزيل الصور وتشغيل الحاويات كلها تعمل جيدًا. وأضفنا --rm فتُزال الحاوية فور انتهاء التشغيل.

الطرفية
docker run --rm hello-world
docker compose version

إذا أردت استخدام Docker بمستخدم عادي أيضًا فأضف ذلك المستخدم إلى مجموعة docker وسجّل الدخول مجددًا. ومجموعة docker لها صلاحيات مثل root، فلا تضف إليها إلا المستخدمين الموثوقين.

الطرفية
usermod -aG docker username

تشغيل الخدمات عبر Docker Compose

Compose طريقة تكتب فيها إعدادات الحاويات في ملف YAML واحد وتشغّلها بسطر واحد. وحتى لو نقلت الخادم أو أنشأت خادمًا جديدًا تقوم البيئة نفسها مجددًا ما دام لديك الملف نفسه. فمثلًا يبدو ملف تشغيل خادم ويب Nginx واحد هكذا.

الطرفية
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
  web:
    image: nginx:stable
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped
EOF
docker compose up -d

افتح http://YOUR_SERVER_IP في المتصفح فتظهر شاشة Nginx. وإذا وضعت index.html في المجلد html يظهر ذلك الملف. وتكفيك الأوامر الأربعة الشائعة أدناه.

  • docker compose ps: يعرض الحاويات العاملة الآن ومنافذها.
  • docker compose logs -f: يتابع السجلات الفورية. وتخرج عبر Ctrl+C.
  • docker compose pull && docker compose up -d: يجلب الصور الجديدة ويبدّل الحاويات إلى الإصدار الجديد.
  • docker compose down: يوقف الحاويات وينظفها. وتبقى البيانات في وحدات التخزين كما هي.

إذا كتبت restart: unless-stopped تعود الحاويات للعمل تلقائيًا عند إعادة تشغيل الخادم. ولا تبقى متوقفة إلا الحاويات التي أوقفتها بنفسك.

إعداد جدار الحماية ونشر المنافذ

يضيف Docker المنافذ المنشورة عبر ports: مباشرة إلى قواعد جدار الحماية (iptables) ويفتحها. لذلك حتى المنفذ الذي لم تسمح به في ufw يُتصل به من الخارج إذا كتبته في ports:. وقواعد البيانات أو واجهات الإدارة التي لا تحتاج إلى إظهارها للخارج اربطها بـ 127.0.0.1 فقط كما أدناه فلا يُتصل بها إلا من داخل الخادم.

compose.yaml
    ports:
      - "127.0.0.1:5432:5432"

لخدمات الويب انشر المنفذين 80 و443 فقط، واجعل البقية تتواصل فيما بينها بأسماء الخدمات داخل شبكة Compose نفسها فيكون الإعداد مرتبًا. ولجدار الحماية الأساسي للخادم كله اتبع دليل جدار الحماية الأساسي وافتح SSH وHTTP وHTTPS فقط.

إدارة السجلات والقرص

سجلات الحاويات تتراكم باستمرار ما لم تحدد غير ذلك. إذا حددت مشغّل السجلات local في /etc/docker/daemon.json كما أدناه تُضغط السجلات ولا يُحفظ منها إلا حجم محدد. وبعد الحفظ نفّذ systemctl restart docker فيُطبَّق على الحاويات المنشأة من جديد.

/etc/docker/daemon.json
{
  "log-driver": "local"
}

الصور غير المستخدمة والحاويات المتوقفة تشغل القرص أيضًا. راقب الاستخدام عبر docker system df ونظّف الصور غير المستخدمة حاليًا عبر docker image prune -a. وعندما تكثر البيانات يمكنك أيضًا إضافة قرص NVMe كتلي إلى الخادم واستخدامه مجلدًا لبيانات Docker.

حماية البيانات والخطوات التالية

يمكنك حذف الحاويات وإعادة إنشائها في أي وقت، لكن البيانات في وحدات التخزين لا يمكن إعادة إنشائها. اترك لقواعد البيانات ملفات تفريغ بانتظام، واحمِ الخادم كله بالنسخ الاحتياطي التلقائي أو اللقطات لمزيد من الأمان. والطريقة في دليل النسخ الاحتياطي واللقطات.

ملف Compose لرفع WordPress عبر Docker موجود في دليل تثبيت WordPress. وإذا أردت نشر عدة تطبيقات من الشاشة وإضافة شهادات HTTPS تلقائيًا فأنشئ خادمًا بصورة Coolify أو Dokploy. والأحجام المناسبة للاستخدام المخصص للحاويات مجمّعة في VPS للحاويات.

أدلة مفيدة معه

إعدادات يُستحسن إكمالها بعد هذا الدليل.

عرض كل الأدلة