在使用Docker安裝Elasticsearch的IK-Analyzer中文分詞器時出現以下錯誤
錯誤信息:Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/plugins/ik-analyzer/plugin-descriptor.properties
錯誤原因:在拷貝IK-analzyer中文分詞器插件到elasticsearch中后,重啟Docker容器報以下錯誤:
Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/plugins/ik-analyzer/plugin-descriptor.properties at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) ~[?:1.8.0_181] at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[?:1.8.0_181] at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[?:1.8.0_181] at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214) ~[?:1.8.0_181] at java.nio.file.Files.newByteChannel(Files.java:361) ~[?:1.8.0_181] at java.nio.file.Files.newByteChannel(Files.java:407) ~[?:1.8.0_181] at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384) ~[?:1.8.0_181] at java.nio.file.Files.newInputStream(Files.java:152) ~[?:1.8.0_181] at org.elasticsearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:114) ~[elasticsearch-5.6.12.jar:5.6.12] at org.elasticsearch.bootstrap.Spawner.spawnNativePluginControllers(Spawner.java:80) ~[elasticsearch-5.6.12.jar:5.6.12] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:168) ~[elasticsearch-5.6.12.jar:5.6.12] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) ~[elasticsearch-5.6.12.jar:5.6.12] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) ~[elasticsearch-5.6.12.jar:5.6.12] ... 6 more
原因:目標容器內目錄權限不足
解決方法:可以先將宿主機插件目錄賦予777權限,再進行復制
$ sudo chmod -R 777 /Users/yans/Downloads/ik-analyzer(插件目錄) $ sudo docker cp /Users/yans/Downloads/ik-analyzer 容器ID:/usr/share/elasticsearch/plugins/ik-analyzer
之后再啟動容器
$ docker start 容器ID