我已经创建了一个Dockerfile,用于在Windows Server 2016上使用Docker为Elasticsearch构建映像。创建映像完美,并且可以使用docker run --rm -p 9200:9200 <imageid>
运行它。我可以使用容器的IP地址成功访问Elasticsearch。链接到Github Project。Docker卷访问错误
的elasticsearch.yml文件配置日志和数据路径:
cluster.name: docker-cluster
network.host: 0.0.0.0
path.logs: C:/persistent/logs/
path.data: C:/persistent/data/
discovery.zen.minimum_master_nodes: 1
我遇到麻烦时,我尝试使用卷坚持主机上的日志和数据。我创建了命令
docker volume create elasticsearch
体积和运行容器:
docker run --rm -p 9200:9200 -v elasticsearch:C:\persistent <imageid>
,给了我一个Java异常:
[2017-05-10T09:00:47,568][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Unable to access 'path.logs' (C:\persistent\logs)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:127) ~[elasticsearch-5.4.0.jar:5.4.0]
<snip>
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.4.0.jar:5.4.0]
Caused by: java.lang.IllegalStateException: Unable to access 'path.logs' (C:\persistent\logs)
at org.elasticsearch.bootstrap.Security.addPath(Security.java:413) ~[elasticsearch-5.4.0.jar:5.4.0]
<snip>
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) ~[elasticsearch-5.4.0.jar:5.4.0]
... 6 more
Caused by: java.nio.file.NoSuchFileException: C:\persistent\logs
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79) ~[?:1.8.0_131]
<snip>
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) ~[elasticsearch-5.4.0.jar:5.4.0]
... 6 more
奇怪的是,该日志文件被创建在卷中包含异常的细节。因此日志文件夹中的日志文件表示无法访问日志文件夹。
我已经尝试在主机上创建日志和数据文件夹,并让Elasticsearch创建它们。我试过使用两个不同的卷,一个用于日志,另一个用于数据。它们都导致相同的错误。
为了使日志和数据文件夹可以被Elasticsearch正确访问,我需要做些什么?