تخيّل هذا: تحمّل تطبيقاً. لا يعمل لأن لديك نسخة خاطئة من Python. أو Java. أو مكتبة ما لم تسمع بها قط. تقضي ثلاث ساعات تحاول إصلاحه، ثم تستسلم في النهاية، وتبدأ بالتشكيك في خياراتك الحياتية.
الحاويات تحل هذه المشكلة. هي السبب في أن عبارة "يعمل على جهازي" لم تعد عذراً مقبولاً في تطوير البرمجيات. وهي ليست فقط للمطورين، بل يستفيد منها أي شخص يشغّل خادماً منزلياً، أو يتعامل مع أتمتة المنزل، أو ببساطة سئم من جحيم تثبيت البرامج.
ما هي الحاويات فعلاً؟
فكّر في الحاوية مثل حاوية شحن على سفينة بضائع. لا يهم ما بداخلها، سيارات أو موز أو أثاث IKEA، فالحاوية بحجم قياسي تناسب أي سفينة أو شاحنة أو قطار. البضائع لا تهتم بالمركبة التي تحملها.
حاويات البرمجيات تعمل بنفس الطريقة. تُغلّف التطبيق مع كل ما يحتاجه للتشغيل: الكود، والمكتبات، والإعدادات، والتبعيات. كل شيء. ثم تعمل هذه الحاوية بشكل متطابق سواء على حاسوبك المحمول، أو خادم سحابي، أو Raspberry Pi في خزانتك.
الحاويات مقابل الأجهزة الافتراضية
"لكن انتظر،" تقول، "أليس هذا ما تفعله الأجهزة الافتراضية؟" نوعاً ما، لكن الحاويات أكثر كفاءة بكثير.
الجهاز الافتراضي يشغّل نظام تشغيل كاملاً. إذا أردت تشغيل ثلاثة تطبيقات، قد تُنشئ ثلاثة أجهزة افتراضية، كل منها بنسخته الخاصة من Windows أو Linux. هذا حمل زائد كبير، غيغابايتات من ملفات نظام التشغيل المكررة، تعمل كلها في نفس الوقت.
الحاويات تتشارك نواة نظام التشغيل المضيف. تُغلّف فقط التطبيق وتبعياته المحددة. ثلاث حاويات قد تستخدم 300 ميغابايت إجمالاً بدلاً من 30 غيغابايت. تبدأ في ثوانٍ بدلاً من دقائق. خفيفة وسريعة ويمكن التخلص منها.
التشبيه
الأجهزة الافتراضية = منازل منفصلة، كل منها بأساسه وسباكته وكهربائه. الحاويات = شقق في مبنى، تتشارك البنية التحتية لكن بمساحات خاصة.
دخول Docker: معيار الحاويات
Docker لم يخترع الحاويات، لكنه جعلها قابلة للاستخدام من قبل البشر العاديين. قبل Docker (الذي صدر في 2013)، كانت الحاويات موجودة لكن إعدادها كان مؤلماً. أعطانا Docker أوامر بسيطة، وصيغة قياسية، والأهم من ذلك Docker Hub، مكتبة ضخمة من صور الحاويات الجاهزة.
تريد تشغيل WordPress؟ هناك حاوية لذلك. تحتاج قاعدة بيانات؟ اختر من MySQL أو PostgreSQL أو MongoDB، كلها بأمر واحد. أتمتة المنزل مع Home Assistant؟ خوادم ألعاب؟ مديرو كلمات مرور؟ شبكات VPN؟ كلها محوّاة وجاهزة للعمل.
# Pull and run a web server in one command
docker run -d -p 80:80 nginx
# That's it. You now have a web server running.لماذا يجب أن تهتم؟
ما لم تكن مطوراً، قد تتساءل لماذا أي من هذا مهم. إليك الأمر: الحاويات خرجت من عالم المطورين وأصبحت الآن أسهل طريقة لتشغيل البرامج على الخوادم المنزلية.
للمطورين
- بيئات متسقة: إعداد التطوير يطابق الإنتاج تماماً
- انضمام سهل: عضو جديد في الفريق؟
docker-compose upويبدأ العمل - خدمات مصغرة: قسّم التطبيقات إلى خدمات صغيرة مستقلة تتوسع بشكل منفصل
- خطوط CI/CD: ابنِ مرة واحدة، انشر في أي مكان
لعشاق المختبر المنزلي
- شغّل عشرات الخدمات على جهاز واحد: لا تعارضات، لا جحيم تبعيات
- تحديثات سهلة: اسحب الصورة الجديدة، أعد تشغيل الحاوية، انتهى
- قابلية النقل: انقل إعدادك بالكامل إلى جهاز جديد بنسخ ملف إعدادات
- عزل: إذا تعطّل تطبيق، لا يُسقط كل شيء آخر
للبنية التحتية
- جدران الحماية وأمن الشبكات: شغّل OPNsense أو pfSense في حاويات
- DNS وحظر الإعلانات: Pi-hole يعمل بشكل رائع في Docker
- البروكسيات العكسية: Nginx Proxy Manager أو Traefik يتعاملان مع التوجيه
- المراقبة: Grafana، Prometheus، Uptime Kuma
Portainer: Docker بسهولة
"لكنني لا أريد حفظ صيغة سطر الأوامر." مفهوم. إليك Portainer.
Portainer هو واجهة رسومية على الويب لإدارة حاويات Docker. بدلاً من كتابة الأوامر، تضغط على الأزرار. يمكنك رؤية جميع حاوياتك قيد التشغيل، وعرض السجلات، وإدارة الشبكات، ونشر تطبيقات جديدة، كل ذلك من المتصفح.
تثبيته؟ أيضاً بأمر واحد:
docker run -d -p 9000:9000 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ceانتقل إلى http://localhost:9000، أنشئ حساب مدير، وأنت تدير الحاويات بواجهة أنيقة. لا حاجة للطرفية (بعد ذلك الأمر الأول).
لماذا أحب Portainer
- نظرة عامة مرئية على كل ما يعمل
- وصول بنقرة واحدة لسجلات الحاويات
- إدارة سهلة لمتغيرات البيئة
- قوالب تطبيقات للنشر بنقرة واحدة
- إدارة عدة مضيفي Docker من واجهة واحدة
حاويات المختبر المنزلي الشائعة
إليك ما يشغّله الناس فعلاً في مختبراتهم المنزلية. الكل متاح على Docker Hub بتثبيت من أمر واحد:
أتمتة المنزل
- Home Assistant - ملك أتمتة المنزل. تحكّم في الأضواء والمنظمات الحرارية والكاميرات وكل شيء.
- Node-RED - برمجة مرئية لتدفقات أتمتة IoT
- Mosquitto - وسيط MQTT لتواصل أجهزة IoT
الوسائط والترفيه
- Plex / Jellyfin - بث مكتبة الوسائط الخاصة بك في أي مكان
- Sonarr / Radarr - إدارة وسائط آلية
- Audiobookshelf - خادم كتب صوتية مستضاف ذاتياً
الإنتاجية والأمان
- Vaultwarden - مدير كلمات مرور Bitwarden مستضاف ذاتياً
- Nextcloud - تخزين سحابي خاص بك (بديل Google Drive)
- WireGuard - VPN سريع وحديث
- Pi-hole - حظر إعلانات على مستوى الشبكة
تشغيل Docker على Raspberry Pi
هنا الجزء الممتع: يمكنك تشغيل كل هذا على Raspberry Pi بقيمة 35 دولاراً. Pi 4 بذاكرة 4 أو 8 غيغابايت يصنع خادماً منزلياً ممتازاً، يستهلك طاقة قليلة أثناء تشغيل عشرات الحاويات.
خطوات الإعداد
- فلاش Raspberry Pi OS Lite (64-بت) على بطاقة SD باستخدام Raspberry Pi Imager
- التشغيل والاتصال عبر SSH:
ssh [email protected] - تحديث النظام:
sudo apt update && sudo apt upgrade -y - تثبيت Docker:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# Log out and back in- تثبيت Docker Compose:
sudo apt install docker-compose -y - تثبيت Portainer (الأمر أعلاه) وابدأ بالنشر!
نصائح أداء Pi
- استخدم SSD عبر USB بدلاً من بطاقة SD لسرعة وعمر أطول
- احصل على علبة بمروحة، فالحاويات قد تُجهد المعالج
- Pi 5 أسرع بشكل ملحوظ إذا احتجت مساحة أكبر
- تحقق من LinuxServer.io لصور حاويات محسّنة لمعمارية ARM
Docker Compose: إدارة حاويات متعددة
بمجرد أن تشغّل أكثر من بضع حاويات، إدارتها فردياً تصبح مملة. هنا يأتي Docker Compose. تُعرّف كل حاوياتك في ملف YAML واحد:
# docker-compose.yml
version: '3'
services:
pihole:
image: pihole/pihole
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
environment:
TZ: 'America/New_York'
restart: unless-stopped
homeassistant:
image: homeassistant/home-assistant
ports:
- "8123:8123"
volumes:
- ./homeassistant:/config
restart: unless-stopped
portainer:
image: portainer/portainer-ce
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stoppedثم أمر واحد يشغّل كل شيء: docker-compose up -d
إعدادك بالكامل الآن مُتحكّم بالإصدارات، قابل للنقل، وقابل للإعادة. الانتقال لجهاز جديد؟ انسخ ملف compose وأحجام البيانات. انتهى.
البداية: مشروع عطلة نهاية الأسبوع الأول
لا تحاول وضع حياتك كلها في حاويات في عطلة نهاية أسبوع واحدة. ابدأ صغيراً:
- ثبّت Docker على جهازك (أو Pi إضافي)
- شغّل Portainer للواجهة المرئية
- انشر Pi-hole لحظر الإعلانات على مستوى الشبكة، فائدة فورية ومرئية
- أضف Uptime Kuma لمراقبة خدماتك
- تخرّج إلى Docker Compose عندما يكون لديك 3 حاويات أو أكثر
من هناك، الحفرة تذهب بعمق ما تريد. أتمتة المنزل. خوادم الوسائط. استضافة ذاتية لكل شيء. نظام الحاويات واسع ومتنامٍ.
"أفضل وقت لبدء تعلم الحاويات كان قبل خمس سنوات. ثاني أفضل وقت هو عطلة نهاية هذا الأسبوع."
مصادر للتعمق
- Docker Official Documentation - الدليل الشامل
- NetworkChuck (YouTube) - دروس Docker ممتعة وصديقة للمبتدئين
- Techno Tim (YouTube) - تعمّق في المختبرات المنزلية والاستضافة الذاتية
- r/selfhosted - مجتمع عشاق الاستضافة الذاتية
- r/homelab - إعدادات المختبرات المنزلية وإلهام
- Awesome Self-Hosted - قائمة ضخمة من البرامج القابلة للاستضافة الذاتية
- LinuxServer.io - صور حاويات عالية الجودة مع وثائق ممتازة
الخلاصة
الحاويات ليست مجرد اتجاه للمطورين، إنها أسهل طريقة لتشغيل البرامج بشكل موثوق. بمجرد أن تفهم المفهوم (حزم قياسية تعمل في أي مكان)، الباقي هو مجرد تعلم الأدوات.
Docker يعطيك المحرك. Portainer يعطيك لوحة التحكم. Raspberry Pi يعطيك ملعباً رخيصاً. والمجتمع قد وضع في حاويات تقريباً كل شيء تريد تشغيله.
فتوقف عن هزّ رأسك عندما يذكر الناس الحاويات. شغّل Portainer هذا الأسبوع، انشر شيئاً مفيداً، وانضم للمحادثة بتجربة حقيقية.
نسختك المستقبلية، تلك التي لا تُصلح تعارضات التبعيات في منتصف الليل، ستشكرك.