docker啓動elasticsearch異常java.nio.file.NoSuchFileException

報錯示例: 

docker啓動elasticsearch異常Exception in thread "main" java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config/jvm.options

hdback-elasticsearch_1  | Exception in thread "main" java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config/jvm.options
hdback-elasticsearch_1  | 	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
hdback-elasticsearch_1  | 	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
hdback-elasticsearch_1  | 	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
hdback-elasticsearch_1  | 	at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:215)
hdback-elasticsearch_1  | 	at java.base/java.nio.file.Files.newByteChannel(Files.java:369)
hdback-elasticsearch_1  | 	at java.base/java.nio.file.Files.newByteChannel(Files.java:415)
hdback-elasticsearch_1  | 	at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
hdback-elasticsearch_1  | 	at java.base/java.nio.file.Files.newInputStream(Files.java:154)
hdback-elasticsearch_1  | 	at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:60)
docker_hdback-elasticsearch_1 exited with code 1

原因總結:

由於我的elasticsearch啓動時使用的是docker-compose方式,並配置了config目錄的掛載數據卷,而啓動時宿主機的掛載數據文件夾中並沒有jvm.options文件,因此出現該文件找不到的情況。

解決辦法:

先將掛載數據卷配置註釋,啓動elasticsearch後將elasticsearch容器中的config/文件夾下的文件拷出到宿主機,重新啓動即可。

1.將容器中文件拷出到宿主機掛載卷文件夾下

docker cp [容器ID]:容器文件路徑  要拷貝的宿主機路徑

例如我的:

docker cp 2a202fa:/usr/share/elasticsearch/plugins/ ./es/es-with-ik-plugins/

2.開啓掛載卷配置,重新啓動elasticsearch

PS 舉一反三: 

如果啓動容器時出現文件找不到,首先關閉掛載卷配置,啓動嘗試,若沒問題,即可判斷是因爲掛在卷文件不充足原因,按照上述方式解決即可。

還有一種情況是讀寫權限問題,給自己的掛在卷賦權限即可,類似的情況如:docker啓動elasticsearch異常Failed to create node environment(解決)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章