Non riesco a eseguire java in un contenitore Docker sul mio server. Anche quando si emette java -version
, ottengo il seguente errore.JVM non può memorizzare la memoria riservata durante l'esecuzione nel contenitore Docker
[email protected]:/# java -version
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000035ce1000000, 2555904, 1) failed; error='Operation not permitted' (errno=1)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2555904 bytes for committing reserved memory.
# An error report file with more information is saved as:
# //hs_err_pid17.log
In base a ciò, java non può mappare 2,5 MB di spazio per la memoria riservata? Questo non mi sembra giusto ...
ho il log completo incluso alla fine, ma per il bene di qualche informazione in più, il mio sistema è segnalato la seguente:
[email protected]:/# uname -m
x86_64
[email protected]:/# free -mh
total used free shared buffers cached
Mem: 15G 9.7G 5.8G 912K 148M 8.9G
-/+ buffers/cache: 639M 14G
Swap: 15G 0B 15G
Qualcuno mi può puntare a la giusta direzione?
log completo: https://gist.github.com/KayoticSully/e206c44681ce261674ba
Aggiornamento
@Yobert inchiodato il problema e consiglio vivamente di leggere i commenti e chattare log. Buone informazioni in là.
Per chi vuole il comando finale che ha reso Java lavoro: setfattr -n user.pax.flags -v "mr" /usr/bin/java
Se la vostra distro non ha setfattr
installato di default dovrebbero essere inclusi nel attr installabile pacchetto tramite Paceman, apt-get, ecc
Questo è fantastico da sapere, ma non funziona per me ... Mi sono assicurato che il flag fosse disabilitato sull'effettivo binario java che è stato eseguito, ma lo stesso problema sta ancora accadendo. – KayoticSully
Controlla dmesg-- dovresti vedere alcune cose lì quando provi ad eseguirlo se si tratta di un problema PAX. Inoltre c'è un modo più nuovo di impostare gli attributi di sicurezza tramite xattrs invece dell'header binario, se il kernel lo supporta.Forse hai la modalità legacy disabilitata? – Yobert
Hmm, proverei a rimuovere più flag che solo m. Rimuoviamo pemrs per java (anche se non penso che sia idiomatico) – Yobert