Docker startet das Elasticsearch-Image und behebt den Fehler nach dem Mounten des Verzeichnisses

Docker startet das Elasticsearch-Image und behebt den Fehler nach dem Mounten des Verzeichnisses

Ein ES-Image vom Docker-Hub heruntergeladen, Version 6.4.2, die Details lauten wie folgt:

Die wichtigeren sind diese beiden. Das erste ist das Arbeitsverzeichnis, und das Mount-Verzeichnis muss auch diesem entsprechen; das zweite ist der Startbefehl, bei dem ein vorgefertigtes Startskript angegeben wird. Also habe ich einen leeren Behälter gestartet, um zu prüfen, was darin vor sich geht:

Die Verzeichnisstruktur innerhalb des Containers ist wie oben dargestellt. Daten werden zum Speichern von Daten verwendet und Protokolle werden zum Speichern von Protokollen verwendet.

Überprüfen Sie als nächstes das Startskript

/usr/local/bin/docker-entrypoint.sh

Ich habe nur ein begrenztes Verständnis für die erste Hälfte, aber der letzte Teil hat wirklich etwas mit dem Mount-Verzeichnis zu tun. Er beschäftigt sich mit den Operationen nach dem Mount-Verzeichnis, was ungefähr bedeutet:

Wenn es der Root-Benutzer ist (Docker startet den Container, standardmäßig wird der Container als Root-Benutzer gestartet) und die Variable TAKE_FILE_OWNERSHIP vorhanden ist, ändern Sie die beiden Verzeichnisse /usr/share/elasticsearch/{data,logs} so, dass sie dem Benutzer 1000 gehören (Sie können hier auch sehen, dass der endgültige Datenspeicherpfad „data“ ist, also sollte es unter „data“ gemountet werden).

Benutzer mit ID 1000:

Es handelt sich um den Elasticsearch-Benutzer. Wenn Sie also kein Verzeichnis mounten, können Sie den Container direkt starten. Wenn Sie ihn mounten, fügen Sie eine Variable hinzu und weisen Sie einen beliebigen Wert zu. Dann kann es normal gestartet werden.

docker run -itd -v /root/es-data/:/usr/share/elasticsearch/data -e TAKE_FILE_OWNERSHIP=111 -p 9200:9200 --name es elasticsearch:6.4.2

Ergänzendes Wissen: Notieren Sie eine Docker-Installation von Elasticsearch und die aufgetretenen Fallstricke

Geben Sie zunächst eine Befehlszeile ein

docker run -d -p 9200:9200 -p 9300:9300 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" --name=<Ihr ES-Name> elasticsearch:<ES-Version>

Verwenden Sie diesen Befehl, um den Docker-Image-Container „es“ direkt zu installieren und auszuführen

Frage

Verwenden Sie zum Starten den Befehl „docker run -d -p 9200:9200 -p 9300:9300 --name=<Ihr ES-Name> elasticsearch:<ES-Version>“. Um dann zu prüfen, ob es gestartet wurde, verwenden Sie den Befehl „docker ps“, um Folgendes zu suchen:

es hat nicht begonnen.

Also habe ich erneut den Befehl docker ps -a verwendet:

Habe festgestellt, dass der Startvorgang beendet wurde.

Verwenden Sie dann den Befehl docker logs -f <Container-ID>, um das ES-Startprotokoll anzuzeigen:

Scrollen Sie nach unten:

Es sieht so aus:

Energieverwaltung:

Speicher: 4k Seite, physisch 1882892k (89076k frei), Swap 0k (0k frei)

vm_info: OpenJDK 64-Bit Server VM (25.181-b13) für linux-amd64 JRE (1.8.0_181-8u181-b13-2~deb9u1-b13), erstellt am 22. Okt. 2018 18:05:23 von „pbuilder“ mit gcc 6.3.0 20170516

Zeit: Fr 23. Nov 07:00:34 2018
verstrichene Zeit: 0 Sekunden (0d 0h 0m 0s)

Also habe ich die Fehlermeldung kopiert, gegoogelt und das Problem gefunden. Die Standardspeicherkonfiguration für elasticsearch5.+ beträgt 2 GB. Ich habe Docker nur 2 GB Speicher gegeben, also war es GG.

Nachdem Sie den alten Container und das alte Image gelöscht haben, fügen Sie dem Docker-Startbefehl -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" hinzu, um das Problem zu lösen

Docker PS:

Besuchen Sie abschließend Port 9200:

ABl.

Der obige Artikel darüber, wie man den Fehler nach dem Starten des Elasticsearch-Images in Docker und dem Mounten des Verzeichnisses behebt, ist alles, was ich mit Ihnen teilen möchte. Ich hoffe, er kann Ihnen als Referenz dienen, und ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Lösen Sie das Problem, dass Elasticsearch aufgrund von JDK-Versionsproblemen nicht gestartet werden kann
  • Lösen Sie das Problem, dass Docker Elasticsearch7.x startet und einen Fehler meldet
  • Problem „Nicht genügend Speicher“ und Lösung, wenn Docker Elasticsearch startet
  • Warnung beim Start von Elasticsearch: JVM-Speicher kann nicht gesperrt werden
  • Elasticsearch fügt den Node-Assembly-Startvorgang über Guice ein

<<:  Spezifische Verwendung des MySQL-Parameters binlog_ignore_db

>>:  Regeln für die Gestaltung des Anmeldeformulars

Artikel empfehlen

Details zu MySQL-Zeittypen und -Modi

Inhaltsverzeichnis 1. MySQL-Zeittyp 2. Überprüfen...

Probleme bei der Ausführungsreihenfolge von AND und OR in SQL-Anweisungen

Frage Beim Schreiben von Datenbank-SQL ist mir ge...

Einige allgemeine Eigenschaften von CSS

CSS-Hintergrund: background:#00ffee; //Hintergrund...

Lösen Sie das Problem beim Ausführen von Jupyter Notebook auf dem Server

Inhaltsverzeichnis Auf dem Server läuft Jupyter N...

Webprojektentwicklung VUE-Mischungs- und Vererbungsprinzip

Inhaltsverzeichnis Mischen Mixin-Hinweis (doppelt...

Schritte zum Verpacken und Bereitstellen des Vue-Projekts auf dem Apache-Server

In der Entwicklungsumgebung wird das Vue-Projekt ...

Natives JS zur Implementierung einer Echtzeituhr

Teilen Sie einen Echtzeituhreffekt, der mit nativ...

MySQL-Datenbankoptimierung: Indeximplementierungsprinzip und Nutzungsanalyse

Dieser Artikel veranschaulicht anhand von Beispie...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7

In diesem Tutorial erfahren Sie alles über die In...

So lösen Sie das Problem „Nginx 503-Dienst vorübergehend nicht verfügbar“

In letzter Zeit tritt nach dem Aktualisieren der ...

Grafisches Tutorial zur Installation von MySQL 5.5 unter Win7

Die MySQL-Installation ist relativ einfach. Norma...