Analyse der Ursache des Docker-Fehlers Beendet (1) vor 4 Minuten

Analyse der Ursache des Docker-Fehlers Beendet (1) vor 4 Minuten

Docker-Fehler

1. Überprüfen Sie die Ursache

Docker-Protokolle Nexus

2. Fehlerursache

OpenJDK 64-Bit Server VM-Warnung: INFO: os::commit_memory(0x00000000e7000000, 419430400, 0) fehlgeschlagen; Fehler='Speicher kann nicht zugewiesen werden' (errno=12) # # Es ist nicht genügend Speicher vorhanden, um die Java Runtime Environment fortzusetzen. # Die native Speicherzuweisung (mmap) konnte 419430400 Bytes für die Zuweisung des reservierten Speichers nicht zuordnen. # Eine Fehlerberichtsdatei mit weiteren Informationen wird wie folgt gespeichert: # /opt/sonatype/nexus/hs_err_pid1.log

Zusatzwissen: Probleme bei der Installation und Ausführung von ElasticSearch mit Docker!

Nachdem ich Version 6.4.3 von ES erstellt hatte, startete ich sie und stellte fest, dass ES nach einer Weile automatisch beendet wurde.

Der Grund scheint zu sein, dass der von ES zugewiesene Standardspeicher zu groß ist. Der Prozess wurde automatisch beendet.

Lassen Sie mich diesen Abgrund also unten aufzeichnen:

Fehler beim Ausführen der Testmethode unter Verwendung des ES-Tool-Klassenindex

org.elasticsearch.transport.ConnectTransportException: [][192.168.235.9300] connect_timeout[30s]

Es wurde festgestellt, dass das mit SpringBoot 2.x importierte ES-Paket nicht mit der auf Docker installierten ES-Version kompatibel ist.

Das in SpringBoot 2.1.3 eingeführte Spring-Data-ES-Paket ist: 3.1.5

Die von Docker installierte ES-Version ist: 5.6.12

Schauen Sie sich die offizielle Dokumentation zur Anpassungsbeziehung an:

Es wurde festgestellt, dass 3.1.X ES Version 6.2.2 oder höher erfordert

Das in meinem Projekt integrierte ES Jar-Paket ist 6.4.3

Dann installieren wir ES Version 6.4.3 in Docker

Wir verwenden das offizielle Docker China-Image zur Beschleunigung von:

# docker pull registry.docker-cn.com/library/elasticsearch:6.4.3

Nach dem Download erstellen wir einen Container und starten diesen:

//Alle lokalen Bilder auflisten# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
registry.docker-cn.com/library/rabbitmq 3-management 92682ab7dca0 vor 12 Tagen 212 MB
registry.docker-cn.com/library/elasticsearch 6.4.3 01e5bee1e059 vor 4 Monaten 795 MB
registry.docker-cn.com/library/elasticsearch latest 5acf0e8da90b vor 5 Monaten 486 MB

Da der der ES-Version nach 5.0 zugewiesene Standardspeicher 2 GB beträgt, wird beim Erstellen von Docker 1 GB benötigt. Daher können wir die Umgebungsvariablen in den Parametern festlegen:

Sie können auch die entsprechende jvm.options-Konfiguration ändern

Wir erstellen ein ES mit 6.4.3

# docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9200 -p 9301:9300 --name ES02 01e5bee1e059

Anschließend stoppte der ES-Container automatisch, nachdem die folgende Situation eintrat. :

Warnung für OpenJDK 64-Bit-Server-VM: Die Option UseConcMarkSweepGC wurde in Version 9.0 verworfen und wird wahrscheinlich in einer zukünftigen Version entfernt.
[2019-03-06T03:29:17,534][INFO ][oenNode ] [] Initialisierung ...
[2019-03-06T03:29:17,680][INFO ][oeeNodeEnvironment ] [gV0jbyu] verwendet [1] Datenpfade, Mounts [[/ (rootfs)]], Netto nutzbarer_Speicherplatz [13,6 GB], Netto Gesamtspeicherplatz [16,9 GB], Typen [rootfs]
[2019-03-06T03:29:17,681][INFO ][oeeNodeEnvironment ] [gV0jbyu] Heap-Größe [247,6 MB], komprimierte Zeiger für gewöhnliche Objekte [true]
[2019-03-06T03:29:17,690][INFO ][oenNode ] [gV0jbyu] Knotenname abgeleitet von Knoten-ID [gV0jbyuBSrmiqJJ8p524XA]; setze [node.name] zum Überschreiben
[2019-03-06T03:29:17,691][INFO ][oenNode ] [gV0jbyu] Version[6.4.3], PID[1], Build[Standard/tar/fe40335/2018-10-30T23:17:19.084789Z], Betriebssystem[Linux/3.10.0-957.5.1.el7.x86_64/amd64], JVM["Oracle Corporation"/OpenJDK 64-Bit Server VM/10.0.2/10.0.2+13]
[2019-03-06T03: 29: 17,691] [Info] [Oennode] [GV0JBYU] JVM -Argumente [-xms1g, -xmx1g, -xx:+useconconcmarksweepgc, -xx: s1m, -djava.awt.headless = true, -dfile.encoding = utf -8, -djna.nosys = true, -xx: -omitstacktraceinfastthrow, -dio.Netty.Nounsafe = true, -dio.Necy.nokeysetoPaNISICE Downhookenabled = false, -dlog4j2.Disable.jmx = true, -djava.io.tmpdir =/tmp/elasticsearch.gvv4iesy, -xx:+heapdumponoutofMemoryError, -xx: heapdumppath = data, -xx: ilfile -fulldafile = logs = logs/hs_err_r_r_r_r_r_r_r_r_r_r_r_r_r_r_r_-Log: -xx: iralx: iralx: iralx: iral Trace, SafePoint: Datei = logs/gc.log: utctime, pid, tags: filecount = 32, filesize = 64m, -djava.locale.providers = compat, -xx: useavx = 2, -des.cgroups.hierarchy.override ICSEARCH, -DES.PATH.CONF =/USR/SHARE/ELASTICSEARCH/Konfiguration, -des.distribution.flavor = Standard, -des.distribution.type = tar]
[2019-03-06T03:29:22,164][INFO ][oepPluginsService ] [gV0jbyu] geladenes Modul [aggs-matrix-stats]
.
.
.
[2019-03-06T03:29:26,129][WARN ][oedsScriptModule ] Skript: Die Rückgabe von Standardwerten für fehlende Dokumentwerte ist veraltet. Setzen Sie die Systemeigenschaft „-Des.scripting.exception_for_missing_value=true“, um das Verhalten mit zukünftigen Hauptversionen kompatibel zu machen.
[2019-03-06T03:29:30,804][INFO ][oexsasFileRolesStore] [gV0jbyu] hat [0] Rollen aus der Datei [/usr/share/elasticsearch/config/roles.yml] analysiert.
[2019-03-06T03:29:31,986][INFO ][oexmjplCppLogMessageHandler] [controller/62] [Main.cc@109] Controller (64 Bit): Version 6.4.3 (Build 7a0781676dd492) Copyright (c) 2018 Elasticsearch BV
[2019-03-06T03:29:32,929][INFO ][oedDiscoveryModule ] [gV0jbyu] mit Erkennungstyp [zen]
[2019-03-06T03:29:34,282][INFO ][oenNode ] [gV0jbyu] initialisiert
[2019-03-06T03:29:34,283][INFO ][oenNode ] [gV0jbyu] wird gestartet ...
[2019-03-06T03:29:34,625][INFO ][oetTransportService ] [gV0jbyu] Veröffentlichungsadresse {172.17.0.2:9300}, gebundene_Adressen {0.0.0.0:9300}
[2019-03-06T03:29:34,656][INFO ][oebBootstrapChecks ] [gV0jbyu] gebunden oder veröffentlicht an eine Nicht-Loopback-Adresse, wodurch Bootstrap-Prüfungen erzwungen werden
FEHLER: [1] Bootstrap-Prüfungen fehlgeschlagen
[1]: Max. virtuelle Speicherbereiche vm.max_map_count [65530] ist zu niedrig, erhöhen Sie auf mindestens [262144]
[2019-03-06T03:29:34,721][INFO ][oenNode ] [gV0jbyu] wird gestoppt ...
[2019-03-06T03:29:34,760][INFO ][oenNode ] [gV0jbyu] gestoppt
[2019-03-06T03:29:34,760][INFO ][oenNode ] [gV0jbyu] wird geschlossen ...
[2019-03-06T03:29:34,778][INFO ][oenNode ] [gV0jbyu] geschlossen
[2019-03-06T03:29:34,780][INFO ][oexmjpNativeController] Nativer Controller-Prozess wurde gestoppt - es können keine neuen nativen Prozesse gestartet werden

Ich habe das Fehlerprotokoll ausgegeben und es grob übersetzt, sodass dieser Satz angezeigt wird:

[1]: Max. virtuelle Speicherbereiche vm.max_map_count [65530] ist zu niedrig, erhöhen Sie auf mindestens [262144]

Es heißt, dass der maximale virtuelle Speicherbereich vm.max_map_count auf 65530 eingestellt ist, was zu niedrig ist und auf mindestens 262144 erhöht werden sollte

Ich habe online bei Baidu nach der Einstellungsmethode gesucht:

# sudo sysctl -w vm.max_map_count=262144

Dann starten wir ES erneut

# Docker-Start ES02

Lassen Sie uns den Status später noch einmal überprüfen:

# Docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
bdaed6794ca6 5acf0e8da90b "/docker-entrypoint.…" vor 5 Minuten Beendet (130) vor 6 Sekunden ES01
7d2dcc5512ee 01e5bee1e059 "/usr/local/bin/dock…" vor 3 Stunden Aktiv seit 15 Minuten 0.0.0.0:9201->9200/tcp, 0.0.0.0:9301->9300/tcp ES02
d372501cc505 92682ab7dca0 "docker-entrypoint.s…" vor 4 Tagen Beendet (0) vor 22 Stunden myrabbitmq

Nachdem wir festgestellt haben, dass es normal gestartet wird, greifen wir auf den Port zu, der http entspricht:

http://192.168.235.128:9201/

Wir haben festgestellt, dass es mit der von uns installierten ES-Version 6.4.3 kein Problem gab.

Die obige Analyse der Ursache des Docker-Fehlers „Exited (1)“ vor 4 Minuten ist alles, was ich mit Ihnen teilen kann. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Tutorial zur Installation von Elasticsearch 7.6.2 in Docker
  • Lösen Sie das Problem, dass Docker Elasticsearch7.x startet und einen Fehler meldet
  • Implementierung der Docker-Container-Statuskonvertierung
  • Lösung zur automatischen Beendigung von Docker Run-Containern
  • Nach dem Docker-Lauf ist der Status immer „Beendet“
  • Docker-Bereinigungsumgebungsvorgang

<<:  Detaillierte Erläuterung des Prinzips der Vue-Überwachungsdaten

>>:  Ausführliche Erläuterung der Mysql-Deadlock-Anzeige und Deadlock-Entfernung

Artikel empfehlen

Vue implementiert dynamische Routingdetails

Inhaltsverzeichnis 1. Frontend-Steuerung 1. In de...

【HTML-Element】Detaillierte Erklärung des Tag-Textes

1. Verwenden Sie grundlegende Textelemente, um In...

40 Schriftarten, empfohlen für berühmte Website-Logos

Wissen Sie, welche Schriftarten in den Logo-Desig...

17 hervorragende Webdesigns, sorgfältig von Startups entwickelt

Startups überraschen uns oft mit ihren unkonventi...

Eine kurze Diskussion über React Native APP-Updates

Inhaltsverzeichnis App-Update-Prozess Grobes Flus...

CSS Lieferadresse Parallelogramm Linienstil Beispielcode

Der Code sieht folgendermaßen aus: // Linienstil ...

Grafisches Tutorial zur Installation von MySQL 8.0.15 und Datenbankgrundlagen

Die Installation der MySQL-Software und die Daten...

Grafisches Tutorial zum Herunterladen und Installieren von MySQL 5.7 und höher

1. Herunterladen 1. Download-Adresse der offiziel...

CSS implementiert die Bottom-Tapbar-Funktion

Viele Mobiltelefone verfügen mittlerweile über di...

Detaillierte Erklärung der Datentypen in den JavaScript-Grundlagen

Inhaltsverzeichnis 1. Datentyp 1.1 Warum brauchen...

Einige Dinge, die beim Erstellen einer Webseite zu beachten sind

--Backup der Homepage 1.txt-Text 2. Scannen Sie da...