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

Auch Webdesigner müssen Web-Coding lernen

Oftmals wird nach der Fertigstellung eines Webdes...

Oberflächliches Webdesign

<br />Ich war schon immer der Meinung, dass ...

Implementierung der MVCC-Mehrversions-Parallelitätskontrolle von MySQL

1 Was ist MVCC Der vollständige Name von MVCC lau...

So konvertieren Sie zusätzlichen Text in HTML in Auslassungspunkte

Wenn Sie zusätzlichen Text in HTML als Auslassung...

Grundlegendes Handbuch für Webdesign 216 Websichere Farben

Die Farbdarstellung auf einer Webseite wird von ve...

Grundlegendes Lernprogramm zum Tabellen-Tag in HTML

Zusammensetzung der Tabellenbeschriftung Die Tabe...

5 Möglichkeiten zum Senden von E-Mails in der Linux-Befehlszeile (empfohlen)

Wenn Sie eine E-Mail in einem Shell-Skript erstel...

So verwenden Sie gdb zum Debuggen von Kerndateien in Linux

1.core-Datei Wenn während der Programmausführung ...

Einführung in die Verwendung gängiger XHTML-Tags

Es gibt viele Tags in XHTML, aber nur wenige werd...