Docker Swarm:如何在同一个卷上设置多个容器

我使用Docker 1.12.2 build bb80604并启用swarm

我有

  • 一个拥有2个leader和3个slave节点的群集。
  • 在slave和leader节点上的每个命名卷上。
  • 运行在2台主服务器上的Elistacsearch

卷创build命令

docker volume create -d local-persist -o mountpoint = / data / docker / swarm / elasticsearch –name esvolume

现在,当我运行docker服务创build命令创buildElasticsearch的5个副本,3个节点启动(每个从属服务器上1),而其余2副本失败

docker service create --replicas 5 --name esdata \ --restart-max-attempts 5 --network myesnetwork \ -e CLUSTER_NAME=swarmescluster \ -e MASTER_NODES=esmaster \ --mount type=volume,src=esvolume,dst=/var/lib/elasticsearch \ --mount type=volume,src=esvolume,dst=/var/log/elasticsearch \ myimagename 

失败的错误是

导致:java.lang.IllegalStateException: 未能获得节点锁,尝试[[/ var / lib / elasticsearch / swarmescluster]]与锁ID [0]; 也许这些位置不可写,或者在不增加[node.max_local_storage_nodes]([1])的情况下启动多个节点? 在org.elasticsearch.node.Node。(Node.java:240)〜[elasticsearch-node.node.Node。(nodeEnvironment.java:259)〜[elasticsearch-5.0.0.jar:5.0.0] org.elasticsearch.node.Node。(Node.java:220)〜[elasticsearch-5.0.0.jar:5.0.0]在org.elasticsearch.bootstrap.Bootstrap $ 5。 (Bootstrap.java:191)〜[elasticsearch-5.0.0.jar:5.0.0] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:191)〜[elasticsearch-5.0.0.jar:5.0。 0] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286)〜[elasticsearch-5.0.0.jar:5.0.0]

问题

  1. 我怎样才能configuration副本写入相同的path或dynamicpath(我需要持久的数据)
  2. 如果我想在创build副本时设置“node.max_local_storage_nodes”的值,我该如何做一个运行时?