تثبيت Docker والتحقّق من المتطلّبات

7 دقيقة
الجمهور
مبتدئ ، Windows أو macOS أو Linux
المدة
20 إلى 30 دقيقة (بالإضافة إلى تحميل Docker)
الوحدة
1/7
المهارة المستهدفة
الحصول على Docker يعمل بذاكرة كافية ، جلب حزمة المختبر ، وقراءة مخرجات prerequis لتصحيح ما ينقص قبل الانطلاق

حزمة المختبر ، للتحميل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/11Docker Desktop ، محرّك WSL 2ملف %UserProfile%\.wslconfigSet-ExecutionPolicy إذا رفض PowerShell النصّ البرمجيّ
macOSDocker Desktop (Intel أو Apple Silicon)Settings → Resources → Memoryلا شيء آخر
LinuxDocker Engine + ملحق docker-compose-pluginذاكرة الجهاز ، مباشرةمجموعة docker و vm.max_map_count إلزاميّان

خطوة بخطوة

  1. 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) :

    powershell
    notepad $env:UserProfile\.wslconfig

    الصق هذه الأسطر الثلاثة ، احفظ ، ثم أعد تشغيل الآلة الافتراضيّة WSL :

    ini
    [wsl2]
    memory=6GB
    processors=4
    powershell
    wsl --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_countvm.max_map_count = 262144).

  2. macOS : تثبيت Docker Desktop وزيادة الذاكرة. ثبّت ملف .dmg المناسب لمعالجك (Apple Silicon أو Intel) ، شغّل Docker Desktop ، ثم افتح Settings → Resources → Advanced وحرّك مؤشّر Memory إلى 6 جيجابايت كحدّ أدنى (8 جيجابايت إذا كنت تنوي تفعيل OpenSearch). اضغط « Apply & restart ». ما يجب أن تراه : docker info --format '{{.MemTotal}}' يعكس الضبط الجديد.

  3. Linux : Docker Engine ومجموعة docker و vm.max_map_count. ثبّت Docker Engine وملحق Compose حسب وثائق توزيعتك (حزم docker-ce و docker-ce-cli و containerd.io و docker-compose-plugin). ثم ، لتجنّب كتابة sudo مع كلّ أمر :

    bash
    sudo usermod -aG docker $USER
    newgrp docker        # أو اخرج من الجلسة ثم أعد تسجيل الدخول
    docker run --rm hello-world

    إلزاميّ تحت Linux : يرفض Elasticsearch و OpenSearch البدء إذا كانت النواة تحدّ عدد مناطق الذاكرة الافتراضيّة إلى 65530 (القيمة الافتراضيّة). ارفع الحدّ فورًا واجعله دائمًا :

    bash
    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).

  4. جلب حزمة المختبر. خياران متكافئان. باستخدام Git :

    bash
    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/. كلّ أوامر الدورة تُشغَّل من هذا المجلّد.

  5. تشغيل قائمة التحقّق.

    bash
    ./labo.sh prerequis
    powershell
    .\labo.ps1 prerequis

    مخرجات حقيقيّة على جهاز الدورة (Windows 11 ، Docker Desktop ، 20 معالجًا ، المختبر مُشغَّل بالفعل) :

    text
    == 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 ويرفض الاستمرار.

  6. قراءة علامة خطأ حمراء وتصحيحها. كلّ يحمل الحلّ في الجملة نفسها. الثلاثة الأكثر شيوعًا :

    السطر المعروضما تفعله
    ✘ le démon Docker ne répond pas — lancez Docker Desktop et attendez l'icône verteDocker 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.ymlElasticsearch قديم مثبّت محليًّا ، أو مشروع 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 تحجب النصوص البرمجيّة غير الموقّعة. اسمح بها لحسابك فقط (لا حاجة لأيّ ترقية صلاحيّات) :

    powershell
    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 »).

للتذكّر

  • المختبر يتطلّب شيئًا واحدًا فقط على جهازك : Docker (Desktop أو Engine + ملحق Compose). كلّ ما تبقّى يعمل داخل الحاويات.
  • 4 جيجابايت من الذاكرة لـ Docker كحدّ أدنى ، 6 جيجابايت مُنصح بها ؛ تحت Windows ، يُضبط ذلك في %UserProfile%\.wslconfig متبوعًا بـ wsl --shutdown.
  • تحت Linux ، vm.max_map_count=262144 في /etc/sysctl.conf إلزاميّ لـ Elasticsearch و OpenSearch ؛ يقوم Docker Desktop بذلك مسبقًا من أجلك تحت Windows و macOS.
  • ./labo.sh prerequis أو .\labo.ps1 prerequis هي قائمة تحقّقك : لا تبدأ إلّا عندما يكون السطر الأخير أخضر.
  • إذا رفض PowerShell النصّ البرمجيّ : 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 الصور غير المستخدَمة من مشاريع أخرى.