حزمة المختبر ، للتحميل — https://github.com/hrhouma2/aiopsatlas-recherche-graphes-labo-fr — بواسطة
git clone https://github.com/hrhouma2/aiopsatlas-recherche-graphes-labo-frأو بالزرّ الأخضر Code → Download ZIP. هذا الدرس يثبّت Docker (الخطوات 1 إلى 3) ، ثم يجلب هذه الحزمة (الخطوة 4) ويشغّل قائمة التحقّق الخاصّة بها (الخطوة 5).
قبل إقلاع طائرة ، لا يخمّن الطيّار : يمرّ على قائمة تحقّق ، نقطة بنقطة ، ولا يقلع إلّا عندما يكون كلّ شيء أخضر. يفعل المختبر نفس الشيء. Docker هو المدرج (بدونه لا يتحرّك شيء) ، الذاكرة المخصّصة هي الوقود (Elasticsearch و Kibana و Neo4j هي ثلاث آلات جافا تطلب كلّ واحدة حصّتها) ، والمنافذ 9200 و 5601 و 7474 و 7687 هي التردّدات اللاسلكيّة التي يجب أن تكون حرّة. الأمر prerequis هو قائمة تحقّقك : يطبع علامة صحّ خضراء أو علامة خطأ حمراء لكلّ نقطة ، ويخبرك بالضبط بما يجب تصحيحه. لا تُشغّل demarrer إلّا عندما يظهر السطر الأخير أخضر.
المختبر هو خمسة حاويات موصوفة في ملف docker-compose.yml ونصّ برمجيّ مرافق بنسختين : labo.sh (bash : Linux و macOS و WSL2 و Git Bash) و labo.ps1 (PowerShell 5.1 أو 7 تحت Windows). لا يفعل النصّ البرمجيّ شيئًا سحريًّا : يسلسل أوامر docker compose وأوامر docker compose exec … curl داخل الحاويات. النتيجة : أنت لا تثبّت أيّ شيء آخر غير Docker على جهازك ، لا Java ولا Node ولا curl.
ما تتحقّق منه prerequis ، بالترتيب : وجود أمر docker ؛ استجابة الخادم (docker info) ؛ وجود docker compose إصدار 2 ؛ الذاكرة المرئيّة من Docker (docker info --format '{{.MemTotal}}') تبلغ 4 جيجابايت (علامة خطأ تحت هذا الحدّ ، تحذير أصفر بين 4 و 6 ، أخضر من 6 فما فوق) ؛ معالجان على الأقلّ ؛ المنافذ الأربعة حرّة أو مستخدمة بالفعل من المختبر نفسه.
| النظام | ما تثبّته | ضبط الذاكرة | خصوصيّة |
|---|---|---|---|
| Windows 10/11 | Docker Desktop ، محرّك WSL 2 | ملف %UserProfile%\.wslconfig | Set-ExecutionPolicy إذا رفض PowerShell النصّ البرمجيّ |
| macOS | Docker Desktop (Intel أو Apple Silicon) | Settings → Resources → Memory | لا شيء آخر |
| Linux | Docker Engine + ملحق docker-compose-plugin | ذاكرة الجهاز ، مباشرة | مجموعة docker و vm.max_map_count إلزاميّان |
Windows : تثبيت Docker Desktop مع WSL 2. حمّل Docker Desktop ، اترك خيار « Use WSL 2 instead of Hyper-V » محدّدًا ، أعد التشغيل إن طُلب منك ، ثم شغّل Docker Desktop وانتظر حتّى تصبح أيقونة الحوت مستقرّة (خضراء). تحت WSL 2 ، لا يرى Docker كلّ ذاكرتك : بشكل افتراضيّ النصف ، وقليلًا ما يتجاوز 8 جيجابايت. لضمان 6 جيجابايت له ، أنشئ الملف C:\Users\<اسمك>\.wslconfig (PowerShell) :
notepad $env:UserProfile\.wslconfigالصق هذه الأسطر الثلاثة ، احفظ ، ثم أعد تشغيل الآلة الافتراضيّة WSL :
[wsl2]
memory=6GB
processors=4wsl --shutdownأعد تشغيل Docker Desktop بعد ذلك. ما يجب أن تراه : docker info --format '{{.MemTotal}}' يُرجع رقمًا أكبر من 6 000 000 000. الخبر الجيّد : الآلة الافتراضيّة WSL 2 الخاصّة بـ Docker Desktop تضبط vm.max_map_count مسبقًا على 262144 ، ليس عليك أن تفعل شيئًا من هذا الجانب (تحقّقنا : docker run --rm alpine sysctl vm.max_map_count → vm.max_map_count = 262144).
macOS : تثبيت Docker Desktop وزيادة الذاكرة. ثبّت ملف .dmg المناسب لمعالجك (Apple Silicon أو Intel) ، شغّل Docker Desktop ، ثم افتح Settings → Resources → Advanced وحرّك مؤشّر Memory إلى 6 جيجابايت كحدّ أدنى (8 جيجابايت إذا كنت تنوي تفعيل OpenSearch). اضغط « Apply & restart ». ما يجب أن تراه : docker info --format '{{.MemTotal}}' يعكس الضبط الجديد.
Linux : Docker Engine ومجموعة docker و vm.max_map_count. ثبّت Docker Engine وملحق Compose حسب وثائق توزيعتك (حزم docker-ce و docker-ce-cli و containerd.io و docker-compose-plugin). ثم ، لتجنّب كتابة sudo مع كلّ أمر :
sudo usermod -aG docker $USER
newgrp docker # أو اخرج من الجلسة ثم أعد تسجيل الدخول
docker run --rm hello-worldإلزاميّ تحت Linux : يرفض Elasticsearch و OpenSearch البدء إذا كانت النواة تحدّ عدد مناطق الذاكرة الافتراضيّة إلى 65530 (القيمة الافتراضيّة). ارفع الحدّ فورًا واجعله دائمًا :
sudo sysctl -w vm.max_map_count=262144
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf
sysctl vm.max_map_countما يجب أن تراه : vm.max_map_count = 262144. بدون هذا الضبط ، سيفشل demarrer مع الرسالة الموصوفة في الدرس 04 (العطل رقم 3).
جلب حزمة المختبر. خياران متكافئان. باستخدام Git :
git clone https://github.com/hrhouma2/aiopsatlas-recherche-graphes-labo-fr
cd aiopsatlas-recherche-graphes-labo-frبدون Git : على صفحة المستودع ، الزرّ « Code » → « Download ZIP » ، فُكّ الضغط ، ثم افتح طرفيّة داخل المجلّد المفكوك الضغط. ما يجب أن تراه : docker-compose.yml و labo.sh و labo.ps1 و README.md ، والمجلّدات elasticsearch/ و neo4j/ و outils/. كلّ أوامر الدورة تُشغَّل من هذا المجلّد.
تشغيل قائمة التحقّق.
./labo.sh prerequis.\labo.ps1 prerequisمخرجات حقيقيّة على جهاز الدورة (Windows 11 ، Docker Desktop ، 20 معالجًا ، المختبر مُشغَّل بالفعل) :
== Prérequis ==
✔ docker : Docker version 29.3.1, build c2be9cc
✔ le démon Docker répond
✔ docker compose : 5.1.1
✔ mémoire disponible pour Docker : 31 Go
✔ processeurs : 20
✔ port 9200 : utilisé par le labo lui-même
✔ port 5601 : utilisé par le labo lui-même
✔ port 7474 : utilisé par le labo lui-même
✔ port 7687 : utilisé par le labo lui-même
Tout est prêt. Lancez : .\labo.ps1 demarrerما يجب أن تراه : عندك ، قبل التشغيل الأوّل ، الأسطر الأربعة الأخيرة ستقول port 9200 : libre وما شابه. سطر أصفر ! mémoire pour Docker : 5 Go — suffisant sans OpenSearch ; 6 Go conseillés pour le profil opensearch غير معطِّل. علامة خطأ حمراء ✘ معطِّلة : ينهي النصّ البرمجيّ بـ Corrigez les points marqués ✘ puis relancez ويرفض الاستمرار.
قراءة علامة خطأ حمراء وتصحيحها. كلّ ✘ يحمل الحلّ في الجملة نفسها. الثلاثة الأكثر شيوعًا :
| السطر المعروض | ما تفعله |
|---|---|
✘ le démon Docker ne répond pas — lancez Docker Desktop et attendez l'icône verte | Docker Desktop غير مُشغَّل ، أو لا يزال في طور البدء. انتظر ، أعد التشغيل. |
✘ mémoire pour Docker : 2 Go — il en faut au moins 4 (fichier %UserProfile%\.wslconfig : [wsl2] memory=6GB, puis wsl --shutdown) | الخطوة 1 (Windows) أو 2 (macOS). |
✘ port 9200 déjà occupé par un autre programme — arrêtez-le ou changez le port dans docker-compose.yml | Elasticsearch قديم مثبّت محليًّا ، أو مشروع Docker آخر. الدرس 04 ، العطل رقم 1. |
ما يجب أن تراه : بعد التصحيح ، أعد تشغيل prerequis حتّى تحصل على السطر الأخضر النهائيّ. ثم انتقل إلى الدرس 03.
يرفض PowerShell النصّ البرمجيّ : .\labo.ps1 : Impossible de charger le fichier … car l'exécution de scripts est désactivée sur ce système. → سياسة التنفيذ الافتراضيّة في Windows تحجب النصوص البرمجيّة غير الموقّعة. اسمح بها لحسابك فقط (لا حاجة لأيّ ترقية صلاحيّات) :
Set-ExecutionPolicy -Scope CurrentUser RemoteSignedأجب O (نعم) وأعد تشغيل .\labo.ps1 prerequis.
docker : Le terme 'docker' n'est pas reconnu (أو docker: command not found) → Docker غير مثبّت ، أو أن الطرفيّة فُتحت قبل التثبيت ولم تُعِد تحميل PATH. أغلق الطرفيّة وأعد فتحها ؛ تحت Linux ، تحقّق من التثبيت بـ docker --version.
Linux : permission denied while trying to connect to the Docker daemon socket → مستخدمك ليس في مجموعة docker ، أو لم تُعِد تسجيل الدخول بعد usermod. أعد الخطوة 3 ؛ يجب أن يُظهر id -nG مجموعة docker.
prerequis يعرض 3 جيجابايت من الذاكرة بينما يملك الجهاز 16 → تحت Windows ، لا يُؤخذ .wslconfig في الحسبان حتّى تنفّذ wsl --shutdown وتُعيد تشغيل Docker Desktop. تحت macOS ، مؤشّر Memory في Docker Desktop لم يُطبَّق (« Apply & restart »).
%UserProfile%\.wslconfig متبوعًا بـ wsl --shutdown.vm.max_map_count=262144 في /etc/sysctl.conf إلزاميّ لـ Elasticsearch و OpenSearch ؛ يقوم Docker Desktop بذلك مسبقًا من أجلك تحت Windows و macOS../labo.sh prerequis أو .\labo.ps1 prerequis هي قائمة تحقّقك : لا تبدأ إلّا عندما يكون السطر الأخير أخضر.Set-ExecutionPolicy -Scope CurrentUser RemoteSigned.تحتلّ الحزمة حوالي 6.3 جيجابايت من الصور (Elasticsearch 2.56 جيجابايت ، Kibana 2.76 جيجابايت ، Neo4j 0.98 جيجابايت) وقريبًا من 12 جيجابايت مع ملف OpenSearch (2.83 + 2.62 جيجابايت). إذا كان قرصك ضيّقًا ، يُظهر docker system df ما يستهلكه Docker ويُحرّر docker image prune الصور غير المستخدَمة من مشاريع أخرى.