我已經創建了一個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正確訪問,我需要做些什麼?