Nie mogę w ogóle uruchomić java w kontenerze Docker na moim serwerze. Nawet podczas wydawania java -version
pojawia się następujący błąd.JVM nie może zarezerwować pamięci zarezerwowanej podczas działania w kontenerze 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
Zgodnie z tym, java nie może mapować 2,5Mb miejsca na rezerwowaną pamięć? To nie wydaje się słuszne ...
mam pełny log zawarte na końcu, ale przez wzgląd na jakiś dodatkowych informacji, mój system donosi co następuje:
[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
Czy ktoś może wskazać mi w właściwy kierunek?
Pełna Log: https://gist.github.com/KayoticSully/e206c44681ce261674ba
Aktualizacja
@Yobert przybity problem i bardzo Proponuję przeczytać komentarze i rozmowy zalogować. Dobra informacja tam.
Dla tych, którzy chcą ostateczny rozkaz, że wykonane prace Java: setfattr -n user.pax.flags -v "mr" /usr/bin/java
Jeśli dystrybucja nie posiada setfattr
instalowany domyślnie powinno być zawarte w pakiecie do zainstalowania attr przez paceman, apt-get itd
To jest niesamowite wiedzieć, ale to nie działa dla mnie ... Upewniłem się, że flaga została wyłączona na rzeczywistej binarnej java, która jest wykonywana, ale ten sam problem nadal się dzieje. – KayoticSully
Sprawdź dmesg - powinieneś zobaczyć kilka rzeczy, gdy próbujesz go uruchomić, jeśli jest to problem PAX. Istnieje również nowsza metoda ustawiania atrybutów bezpieczeństwa za pomocą xattrs zamiast nagłówka binarnego, jeśli obsługuje je jądro.Może masz wyłączony tryb starszej wersji? – Yobert
Hmm, spróbowałbym usunąć więcej flag niż tylko m. Usuwamy pemrs dla java (choć nie myślę, że to idiomatyczne) – Yobert