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

Einführung in berechnete Eigenschaften in Vue

Inhaltsverzeichnis 1. Was ist eine berechnete Eig...

So richten Sie Windows Server 2019 ein (mit Bildern und Text)

1. Installation von Windows Server 2019 Installie...

js-Objekt, um einen Daten-Paging-Effekt zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...

JavaScript-Timer zum nahtlosen Scrollen von Bildern

In diesem Artikel wird der spezifische JavaScript...

Ausführliche Erläuterung versteckter Felder, einer neuen Funktion von MySQL 8.0

Vorwort MySQL Version 8.0.23 fügt eine neue Funkt...

Einführung in general_log-Protokollwissenspunkte in MySQL

Die folgenden Funktionsdemonstrationen basieren a...

Tutorial zur Installation von jdk1.8 auf Ubuntu14.04

1. Laden Sie die JDK-Download-Adresse herunter我下載...

vue-cli4.5.x erstellt schnell ein Projekt

1. Installieren Sie vue-cli npm ich @vue/cli -g 2...

So handhaben Sie Bilder in Vue-Formularen

Frage: Ich habe in Vue ein Formular zum Hochladen...

Grundlegende Verwendung und Beispiele von yum (empfohlen)

yum-Befehl Yum (vollständiger Name Yellow Dog Upd...

So starten und starten Sie nginx unter Linux neu

Nginx (Engine x) ist ein leistungsstarker HTTP- u...

Analyse mehrerer Gründe, warum Iframe weniger verwendet werden sollte

Die folgende Grafik zeigt, wie zeitaufwändig es is...