Εγκατάσταση του Docker και επαλήθευση των προαπαιτούμενων

8 λεπτά
Κοινό
αρχάριος, Windows, macOS ή Linux
Διάρκεια
20 έως 30 λεπτά (συν το κατέβασμα του Docker)
Ενότητα
1/7
Στοχευόμενη δεξιότητα
να έχεις ένα λειτουργικό Docker με αρκετή μνήμη, να αποκτήσεις το kit του εργαστηρίου και να διαβάζεις την έξοδο του prerequis για να διορθώνεις ό,τι λείπει πριν την εκκίνηση

Το 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/11Docker Desktop, μηχανή WSL 2αρχείο %UserProfile%\.wslconfigSet-ExecutionPolicy αν το PowerShell αρνείται το σενάριο
macOSDocker Desktop (Intel ή Apple Silicon)Settings → Resources → Memoryτίποτα άλλο
LinuxDocker Engine + plugin docker-compose-pluginη RAM του μηχανήματος, απευθείαςομάδα 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 δεν βλέπει όλη τη RAM σου: εξ ορισμού τη μισή, και σπάνια περισσότερο από 8 GB. Για να του εξασφαλίσεις 6 GB, δημιούργησε το αρχείο 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 GB (8 GB αν σκοπεύεις να ενεργοποιήσεις το OpenSearch). Κάνε κλικ «Apply & restart». Αυτό που πρέπει να δεις: το docker info --format '{{.MemTotal}}' αντικατοπτρίζει τη νέα ρύθμιση.

  3. Linux: Docker Engine, ομάδα docker και vm.max_map_count. Εγκατέστησε το Docker Engine και το plugin 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 αρνούνται να ξεκινήσουν αν ο πυρήνας περιορίζει τον αριθμό των ζωνών εικονικής μνήμης στις 65.530 (η προεπιλεγμένη τιμή). Αύξησε το όριο αμέσως και κάνε το μόνιμο:

    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. Λήψη του kit του εργαστηρίου. Δύο ισοδύναμες επιλογές. Με 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 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 μπλοκάρει τα ανυπόγραφα σενάρια. Επίτρεψέ τα μόνο για τον λογαριασμό σου (χωρίς να χρειάζεται αύξηση δικαιωμάτων):

    powershell
    Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

    Απάντησε O (ναι) και ξανατρέξε .\labo.ps1 prerequis.

  • docker : Le terme 'docker' n'est pas reconnudocker: 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»).

Να θυμάσαι

  • Το εργαστήριο απαιτεί μόνο ένα πράγμα στο μηχάνημά σου: το Docker (Desktop ή Engine + plugin Compose). Όλα τα υπόλοιπα τρέχουν στα κοντέινερ.
  • 4 GB μνήμης για το Docker κατ' ελάχιστον, 6 GB συνιστώμενα· σε 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.

Για να πας πιο μακριά

Το 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 απελευθερώνει τις άχρηστες εικόνες άλλων έργων.