Το kit του εργαστηρίου, προς λήψη — 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), μετά αποκτά αυτό το kit (βήμα 4) και εκτελεί τη λίστα ελέγχου του (βήμα 5).
Πριν απογειώσει ένα αεροπλάνο, ο πιλότος δεν μαντεύει: ξεδιπλώνει μια λίστα ελέγχου, σημείο προς σημείο, και απογειώνεται μόνο όταν όλα είναι πράσινα. Το εργαστήριο κάνει το ίδιο. Το Docker είναι ο διάδρομος (χωρίς αυτό, τίποτα δεν κυλάει), η κατανεμημένη μνήμη είναι το καύσιμο (τα Elasticsearch, Kibana και Neo4j είναι τρεις μηχανές Java που απαιτούν η καθεμία το μερίδιό της), οι θύρες 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 υπάρχει· ο daemon απαντά (docker info)· το docker compose v2 είναι εκεί· η μνήμη που βλέπει το Docker (docker info --format '{{.MemTotal}}') φτάνει τα 4 GB (σταυρός από κάτω, κίτρινη προειδοποίηση μεταξύ 4 και 6, πράσινο από 6 και πάνω)· τουλάχιστον 2 επεξεργαστές· οι τέσσερις θύρες είναι ελεύθερες ή ήδη χρησιμοποιούμενες από το ίδιο το εργαστήριο.
| Σύστημα | Τι εγκαθιστάς | Ρύθμιση μνήμης | Ιδιαιτερότητα |
|---|---|---|---|
| Windows 10/11 | Docker Desktop, μηχανή WSL 2 | αρχείο %UserProfile%\.wslconfig | Set-ExecutionPolicy αν το PowerShell αρνείται το σενάριο |
| macOS | Docker Desktop (Intel ή Apple Silicon) | Settings → Resources → Memory | τίποτα άλλο |
| Linux | Docker Engine + plugin docker-compose-plugin | η RAM του μηχανήματος, απευθείας | ομάδα docker και vm.max_map_count υποχρεωτικά |
Windows: εγκατάσταση του Docker Desktop με WSL 2. Κατέβασε το Docker Desktop, άφησε επιλεγμένο το «Use WSL 2 instead of Hyper-V», επανεκκίνησε αν ζητηθεί, μετά εκτέλεσε το Docker Desktop και περίμενε το εικονίδιο της φάλαινας να σταθεροποιηθεί (πράσινο). Στο WSL 2, το Docker δεν βλέπει όλη τη RAM σου: εξ ορισμού τη μισή, και σπάνια περισσότερο από 8 GB. Για να του εξασφαλίσεις 6 GB, δημιούργησε το αρχείο 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 GB (8 GB αν σκοπεύεις να ενεργοποιήσεις το OpenSearch). Κάνε κλικ «Apply & restart». Αυτό που πρέπει να δεις: το docker info --format '{{.MemTotal}}' αντικατοπτρίζει τη νέα ρύθμιση.
Linux: Docker Engine, ομάδα docker και vm.max_map_count. Εγκατέστησε το Docker Engine και το plugin 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 αρνούνται να ξεκινήσουν αν ο πυρήνας περιορίζει τον αριθμό των ζωνών εικονικής μνήμης στις 65.530 (η προεπιλεγμένη τιμή). Αύξησε το όριο αμέσως και κάνε το μόνιμο:
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).
Λήψη του kit του εργαστηρίου. Δύο ισοδύναμες επιλογές. Με 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 GB μνήμης ενώ το μηχάνημα έχει 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.Το kit καταλαμβάνει περίπου 6,3 GB εικόνων (Elasticsearch 2,56 GB, Kibana 2,76 GB, Neo4j 0,98 GB) και σχεδόν 12 GB με το προφίλ OpenSearch (2,83 + 2,62 GB). Αν ο δίσκος σου είναι στενός, το docker system df δείχνει τι καταναλώνει το Docker και το docker image prune απελευθερώνει τις άχρηστες εικόνες άλλων έργων.