CoreOS上的ElasticSearch容器具有持久性存储

我试图在DigitalOcean上的Docker和CoreOS [stable]上运行ElasticSearch集群。 为了获得持久性存储的工作,我尝试了几乎所有的select,并用尽了想法。

几乎每个–volume选项( -v /data/elasticsearch elasticsearch, -v $(pwd)/esdata:/data/elasticsearch ,…)都被忽略,并且在日志中using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/vda9)]]

只有当使用-v /usr/share/elasticsearch/data:/data/elasticsearch我得到一个错误,说它不能在只读文件系统上写。

我究竟做错了什么?

完整的elasticsearch.service是:

 [Unit] Description=ElasticSearch service After=docker.service Requires=docker.service [Service] TimeoutSec=180 EnvironmentFile=/etc/environment ExecStartPre=/usr/bin/mkdir -p /data/elasticsearch ExecStartPre=/usr/bin/docker pull elasticsearch ExecStart=/bin/bash -c '\ curl -f ${COREOS_PRIVATE_IPV4}:4001/v2/keys/services/elasticsearch; \ if [ "$?" = "0" ]; then \ UNICAST_HOSTS=$(etcdctl ls --recursive /services/elasticsearch \ | sed "s/\/services\/elasticsearch\///g" \ | sed "s/$/:9300/" \ | paste -s -d","); \ else \ UNICAST_HOSTS=""; \ fi; \ /usr/bin/docker run \ -v /data/elasticsearch \ --name %p-%i \ --net=host \ elasticsearch \ --node.name=%p-%i \ --cluster.name=mysearchcluster \ --network.publish_host=${COREOS_PRIVATE_IPV4} \ --discovery.zen.ping.multicast.enabled=false \ --discovery.zen.ping.unicast.hosts=$UNICAST_HOSTS' ExecStop=/usr/bin/docker stop %p-%i ExecStop=/usr/bin/docker rm %p-%i [X-Fleet] X-Conflicts=%p@*.service 

在单个节点上运行,ElasticSearch没有把任何东西放到/ data / elasticsearch中。 我部署了多个节点的时候,有数据,似乎持久。 最终的.service文件:

 [Unit] Description=ElasticSearch service After=docker.service Requires=docker.service [Service] TimeoutSec=180 EnvironmentFile=/etc/environment ExecStartPre=/usr/bin/mkdir -p /data/elasticsearch ExecStartPre=/usr/bin/docker pull elasticsearch ExecStart=/bin/bash -c '\ curl -f ${COREOS_PRIVATE_IPV4}:4001/v2/keys/services/elasticsearch; \ if [ "$?" = "0" ]; then \ UNICAST_HOSTS=$(etcdctl ls --recursive /services/elasticsearch \ | sed "s/\/services\/elasticsearch\///g" \ | sed "s/$/:9300/" \ | paste -s -d","); \ else \ UNICAST_HOSTS=""; \ fi; \ /usr/bin/docker run \ --volume /data/elasticsearch:/usr/share/elasticsearch/data \ --name %p-%i \ --net=host \ elasticsearch \ --node.name=%p-%i \ --cluster.name=myescluster \ --network.publish_host=${COREOS_PRIVATE_IPV4} \ --discovery.zen.ping.multicast.enabled=false \ --discovery.zen.ping.unicast.hosts=$UNICAST_HOSTS' ExecStop=/usr/bin/docker stop %p-%i ExecStop=/usr/bin/docker rm %p-%i [X-Fleet] X-Conflicts=%p@*.service