نبذة عن Docker
Docker محرّك حاويات: يجمع التطبيق وتبعياته في صورة (image) واحدة، ثم يشغّلها معزولةً فوق نواة النظام المضيف. يعتمد عليه المطوّرون للحصول على البيئة نفسها محليًا وفي الإنتاج. وتستخدمه الفرق الصغيرة لاستضافة عدة خدمات على جهاز واحد دون أن تتعارض تبعيات كل خدمة مع الأخرى.
عند التسليم يحتوي VPS لينكس لديك (Debian 12 أو Debian 13 أو Ubuntu 22.04 أو 24.04، إضافةً إلى Ubuntu 20.04 مع التحفظات المذكورة أدناه) على Docker Engine مثبّتًا من مستودع apt الرسمي لـ Docker. حزم docker-ce وdocker-ce-cli وcontainerd.io وdocker-buildx-plugin وdocker-compose-plugin موجودة، وخدمتا docker وcontainerd مفعّلتان عند الإقلاع.
يُتحقق من بصمة مفتاح توقيع المستودع قبل التثبيت. وفي آخر خطوات الوصفة تُشغَّل حاوية hello-world للتأكد من أن الخدمة تستجيب. بعد ذلك يصبح الخادم بين يديك: لا يُضاف أي مستخدم إلى مجموعة docker افتراضيًا، ولا يُنشر أي تطبيق نيابةً عنك.
ما يمكنك فعله مع Docker
مستودع Docker الرسمي عبر apt
تأتي الحزم من download.docker.com مع التحقق من بصمة مفتاح التوقيع. وتصلك التحديثات عبر apt مثل بقية النظام.
Compose وBuildx مضمّنان
يُستخدم إضافة Compose بالأمر
docker compose(بلا شرطة)، ويتولى Buildx بناء صورك. يمكنك نشر حزمة خدمات متعددة منذ أول اتصال.تدوير السجلات مهيّأ مسبقًا
إذا لم يكن الملف
/etc/docker/daemon.jsonموجودًا، تكتبه الوصفة بمشغّلjson-fileوبحجم 10 ميغابايت للملف مع الاحتفاظ بثلاثة ملفات. وهكذا لا تملأ سجلات الحاويات القرص دون أن تنتبه.إزالة الحزم المتعارضة
تُحذف الحزم غير الرسمية مثل
docker.ioوpodman-dockerوcontainerdوruncقبل التثبيت. هذا يمنع اختلاط الإصدارات الذي يتسبب في فشل الخدمة.صلاحيات تعادل root تحت تحكمك
لا يُضاف أي حساب إلى مجموعة
dockerالتي تعادل صلاحيات root. أنت من يقرر لمن تُمنح هذه الصلاحية.سجل تثبيت واضح
تُسجَّل كل خطوة في
/var/log/docker-install.log، ويؤكد الملف/var/lib/docker-install.doneأن الوصفة اكتملت حتى نهايتها.
ابدأ مع Docker
من الطلب إلى التشغيل الفعلي في دقائق.
- 1
اطلب الـ VPS مع تحديد Docker
اختر VPS لينكس في باريس أو فرانكفورت، ثم حدّد Debian 12 أو Debian 13 أو Ubuntu 22.04 أو 24.04، وفعّل خيار Docker في تبويب «التطبيقات» (Applications) في نموذج الطلب.
- 2
اتصل بالخادم وتحقق من التثبيت
بعد تسليم الخادم، اتصل به عبر SSH بالبيانات التي وصلتك. يجري التثبيت عند أول إقلاع، فإذا لم يظهر ملف العلامة بعد فانتظر قليلًا وتابع السجل.
Bashssh USER@SERVER_IP cat /var/lib/docker-install.done tail -n 20 /var/log/docker-install.log - 3
شغّل أول حاوية
تحقق من الإصدارات، ثم شغّل خادم ويب تجريبيًا. المنفذ منشور على 127.0.0.1 فقط، فلا يكون مكشوفًا على الإنترنت أثناء الاختبار.
Bashdocker --version && docker compose version docker run -d --name web -p 127.0.0.1:8080:80 nginx curl -I http://127.0.0.1:8080 - 4
أمّن الخادم قبل الإنتاج
ضع وكيلًا عكسيًا (Caddy أو Traefik أو Nginx) أمام خدماتك ليتولى YOUR_DOMAIN عبر HTTPS، ولا تنشر على الإنترنت سوى المنفذين 80 و443. أبقِ بقية المنافذ على 127.0.0.1 لأن المنافذ التي ينشرها Docker تتجاوز ufw. وأخيرًا انسخ مجلداتك (volumes) وملفات compose احتياطيًا.
Bashdocker volume ls docker compose up -d
استخدامات Docker
استضافة عدة خدمات معزولة
قاعدة PostgreSQL وتطبيق ويب وأداة مراقبة، كلٌّ في حاويته ومعرّفة في ملف
compose.yamlواحد. تحدّث كل خدمة أو تعيد تشغيلها على حدة.نشر تطبيق ذاتي الاستضافة
تنشر مشاريع مفتوحة المصدر كثيرة (n8n وNextcloud وGitea وUptime Kuma وغيرها) صورة Docker ومثالًا لـ Compose. والـ VPS جاهز لاستقبالها دون أي تحضير مسبق.
بناء الصور واختبارها
مع Buildx تبني صورك على جهاز بعيد مخصص دون تحميل حاسوبك. يفيد ذلك في سلسلة CI خفيفة أو في اختبارات التكامل.
محاكاة الإنتاج في بيئة التجهيز
يمنحك VPS ثانٍ بإصدار Docker نفسه وملفات Compose نفسها بيئة اختبار قريبة من الإنتاج، بجهد إداري أقل.
أسئلة شائعة عن Docker
تثبّت الوصفة docker-ce وdocker-ce-cli وcontainerd.io وdocker-buildx-plugin وdocker-compose-plugin من مستودع apt الرسمي لـ Docker. وتُفعَّل خدمتا docker وcontainerd عند الإقلاع. مع Compose v2 يكون الأمر docker compose وليس docker-compose.
المزيد عن Docker
جدار الحماية والمنافذ المنشورة
هذا أكثر الأخطاء شيوعًا. عندما تنشر منفذًا بالخيار -p 8080:80، يكتب Docker قواعد iptables خاصة به، فتسبق حركة المرور قواعد ufw أو firewalld. لذلك لا يمنع الأمر ufw deny 8080 شيئًا.
هناك طريقتان موثوقتان: ربط المنفذ بالواجهة المحلية (-p 127.0.0.1:8080:80) وعرض الخدمة عبر وكيل عكسي، أو التصفية في السلسلة DOCKER-USER التي يراجعها Docker قبل قواعده. الأولى أبسط وتكفي في معظم الحالات.
مجموعة docker وsudo
الانتماء إلى مجموعة docker يعادل امتلاك صلاحيات root على الجهاز، لأن الحاوية تستطيع تركيب نظام ملفات المضيف. لا تضيف الوصفة أحدًا إلى هذه المجموعة. إذا أردت العمل بحساب عادي، فأضفه بنفسك ثم أعد الاتصال.
Bashsudo usermod -aG docker USER
سجلات الحاويات
الملف /etc/docker/daemon.json الذي يُكتب عند التسليم يحدّ كل حاوية بثلاثة ملفات حجم كل منها 10 ميغابايت. ولا يُنشأ إلا إذا لم يكن موجودًا من قبل. لتغيير هذه القيم عدّل الملف ثم أعد تشغيل الخدمة. ولا تنطبق الإعدادات الجديدة إلا على الحاويات المنشأة بعد إعادة التشغيل.
Bashsudo systemctl restart docker
التحديثات
مستودع Docker معرّف في /etc/apt/sources.list.d/docker.sources، لذا تصل الإصدارات الجديدة مع تحديثات apt المعتادة. جدولها في وقت يمكن فيه قبول إعادة تشغيل الخدمة، لأنها قد توقف حاوياتك إذا لم يكن الخيار live-restore مفعّلًا.
Bashsudo apt update && sudo apt install --only-upgrade docker-ce docker-ce-cli containerd.io
Ubuntu 20.04
لم تعد Docker تدعم Ubuntu 20.04 رسميًا. ومع ذلك تحاول الوصفة التثبيت إن كان مستودع Docker ما زال ينشر هذا الإصدار، وتسجّل تحذيرًا في السجل. لخادم إنتاج، اختر Ubuntu 22.04 أو Ubuntu 24.04 أو Debian 12 أو Debian 13، وكلها مدعومة.
النسخ الاحتياطي
الصور يمكن تنزيلها من جديد، أما بياناتك فلا. انسخ احتياطيًا المجلدات المسمّاة (named volumes) والمسارات المركّبة وملفات compose.yaml مع متغيرات البيئة الخاصة بها. وفي حالة قاعدة البيانات، فضّل التصدير المنطقي (pg_dump أو mysqldump) على نسخ المجلد أثناء التشغيل.
