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

Anpassungsmethode des Linux-Peripheriedateisystems

Vorwort Wenn wir von Linux-Systemen sprechen, mei...

Details zum Lazy Loading im Vue-Routing

Inhaltsverzeichnis 1. Was ist Lazy Loading von Ro...

Detaillierte Erklärung von MySQLs Seconds_Behind_Master

Inhaltsverzeichnis Sekunden_hinter_Master Ursprün...

IIS7 IIS8 http springt automatisch zu HTTPS (Port 80 springt zu Port 443)

IIS7 muss bestätigen, ob das pseudostatische Modu...

Füllen Sie die Suchfunktion auf der HTML-Seite aus

Ich habe kürzlich an einem Framework gearbeitet, ...

So verwenden Sie die MySQL-Indexzusammenführung

Die Indexzusammenführung ist ein intelligenter Al...

So fügen Sie Bilder in HTML-Seiten ein und fügen Kartenindexbeispiele hinzu

1. Im Web unterstützte Bildformate: GIF: kann 256...

Tutorial zur kostenlosen Konfiguration der MySQL 5.7.18-Installationsversion

Installations-Tutorial zur kostenlosen Installati...

So installieren Sie MySQL 8.0 in Docker

Umgebung: MacOS_Cetalina_10.15.1, Mysql8.0.18, Do...

HTML+Sass implementiert HambergurMenu (Hamburger-Menü)

Vor ein paar Tagen habe ich mir ein Video von ein...