# Cannot setup single node elasticsearch in docker

**URL:** <https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193>\
**Category:** Elasticsearch\
**Created:** [June 18, 2019, 7:01am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193 "2019-06-18T07:01:30Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![agreatfool](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/agreatfool/32/48283_2.png) [@agreatfool](https://discuss.elastic.co/u/agreatfool)\
**Post date:** [June 18, 2019, 7:01am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/1 "2019-06-18T07:01:30Z")

</div>

docker-compose config:

```
es_1:
  image: "elasticsearch:7.0.0"
  container_name: "es_1"
  hostname: "es_1"
  volumes:
    - es_vol_1_data:/usr/share/elasticsearch/data
    - es_vol_1_logs:/usr/share/elasticsearch/logs
    - /private/tmp/elasticsearch.yaml:/usr/share/elasticsearch/config/elasticsearch.yml
  networks:
    - "net"
  ports:
    - "9201:9200"
  expose:
    - "9300"
  restart: "always"
  logging:
    <<: *ES_LOGGING_DEFAULTS
  environment:
    - node.name=es_1
    - http.port=9200
    - discovery.type=single-node

```

crash:

> {"type": "server", "timestamp": "2019-06-18T06:56:06,758+0000", "level": "WARN", "component": "o.e.b.ElasticsearchUncaughtExceptionHandler", "cluster.name": "es\_cluster", "node.name": "es\_1", "message": "uncaught exception in thread [main]" ,  
> "stacktrace": ["org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: cannot start with [discovery.type] set to [single-node] when local node {es\_1}{eIL2EgmlQiGcgQpB0sbOqA}{DwoHWj75Q2eSIpsybKCtSg}{172.18.0.17}{172.18.0.17:9300}{ml.machine\_memory=6246748160, xpack.installed=true, ml.max\_open\_jobs=20} does not have quorum in voting configuration VotingConfiguration{V\_jSX7VQQ3aK5wbNtfIP3w,eIL2EgmlQiGcgQpB0sbOqA,ZbUHYuziRR63J3R9sg3Plg}",  
> "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "Caused by: java.lang.IllegalStateException: cannot start with [discovery.type] set to [single-node] when local node {es\_1}{eIL2EgmlQiGcgQpB0sbOqA}{DwoHWj75Q2eSIpsybKCtSg}{172.18.0.17}{172.18.0.17:9300}{ml.machine\_memory=6246748160, xpack.installed=true, ml.max\_open\_jobs=20} does not have quorum in voting configuration VotingConfiguration{V\_jSX7VQQ3aK5wbNtfIP3w,eIL2EgmlQiGcgQpB0sbOqA,ZbUHYuziRR63J3R9sg3Plg}",  
> "at org.elasticsearch.cluster.coordination.Coordinator.doStart(Coordinator.java:686) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:61) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.node.Node.start(Node.java:681) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:263) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:334) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.0.0.jar:7.0.0]",  
> "... 6 more"] }

I really have no idea what does "does not have quorum in voting configuration" mean, any idea?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 18, 2019, 7:15am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/2 "2019-06-18T07:15:31Z")

</div>

Could you first remove the existing volume with `docker-compose down -v` If you don't have critical data.

And use 7.1.1 instead of 7.0.0.

---

<div class="post-metadata">

**Author:** ![agreatfool](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/agreatfool/32/48283_2.png) [@agreatfool](https://discuss.elastic.co/u/agreatfool)\
**Post date:** [June 18, 2019, 7:16am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/3 "2019-06-18T07:16:36Z")

</div>

Thank you for the reply. Got it, let me have a try.

---

<div class="post-metadata">

**Author:** ![agreatfool](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/agreatfool/32/48283_2.png) [@agreatfool](https://discuss.elastic.co/u/agreatfool)\
**Post date:** [June 18, 2019, 7:37am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/4 "2019-06-18T07:37:39Z")

</div>

Hi @dadoonet,

Still crashing after upgrade to 7.1.1:

> {"type": "server", "timestamp": "2019-06-18T07:35:38,645+0000", "level": "WARN", "component": "o.e.b.ElasticsearchUncaughtExceptionHandler", "cluster.name": "es\_cluster", "node.name": "es\_1", "message": "uncaught exception in thread [main]" ,  
> "stacktrace": ["org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: cannot start with [discovery.type] set to [single-node] when local node {es\_1}{eIL2EgmlQiGcgQpB0sbOqA}{hIX50HfvRr-gkPZkI\_us1g}{172.18.0.18}{172.18.0.18:9300}{ml.machine\_memory=6246748160, xpack.installed=true, ml.max\_open\_jobs=20} does not have quorum in voting configuration VotingConfiguration{V\_jSX7VQQ3aK5wbNtfIP3w,eIL2EgmlQiGcgQpB0sbOqA,ZbUHYuziRR63J3R9sg3Plg}",  
> "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "Caused by: java.lang.IllegalStateException: cannot start with [discovery.type] set to [single-node] when local node {es\_1}{eIL2EgmlQiGcgQpB0sbOqA}{hIX50HfvRr-gkPZkI\_us1g}{172.18.0.18}{172.18.0.18:9300}{ml.machine\_memory=6246748160, xpack.installed=true, ml.max\_open\_jobs=20} does not have quorum in voting configuration VotingConfiguration{V\_jSX7VQQ3aK5wbNtfIP3w,eIL2EgmlQiGcgQpB0sbOqA,ZbUHYuziRR63J3R9sg3Plg}",  
> "at org.elasticsearch.cluster.coordination.Coordinator.doStart(Coordinator.java:689) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:61) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.node.Node.start(Node.java:683) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:263) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:334) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.1.1.jar:7.1.1]",  
> "... 6 more"] }

---

<div class="post-metadata">

**Author:** ![agreatfool](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/agreatfool/32/48283_2.png) [@agreatfool](https://discuss.elastic.co/u/agreatfool)\
**Post date:** [June 18, 2019, 7:45am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/5 "2019-06-18T07:45:06Z")

</div>

I checked the source code: [https://github.com/elastic/elasticsearch/blob/master/server/src/main/java/org/elasticsearch/cluster/coordination/Coordinator.java#L653](https://github.com/elastic/elasticsearch/blob/master/server/src/main/java/org/elasticsearch/cluster/coordination/Coordinator.java#L653)

```
final ClusterState lastAcceptedState = coordinationState.get().getLastAcceptedState();
if (lastAcceptedState.metaData().clusterUUIDCommitted()) {
    logger.info("cluster UUID [{}]", lastAcceptedState.metaData().clusterUUID());
}
final VotingConfiguration votingConfiguration = lastAcceptedState.getLastCommittedConfiguration();
if (singleNodeDiscovery &&
    votingConfiguration.isEmpty() == false &&
    votingConfiguration.hasQuorum(Collections.singleton(getLocalNode().getId())) == false) {
    throw new IllegalStateException("cannot start with [" + DiscoveryModule.DISCOVERY_TYPE_SETTING.getKey() + "] set to [" +
        DiscoveryModule.SINGLE_NODE_DISCOVERY_TYPE + "] when local node " + getLocalNode() +
        " does not have quorum in voting configuration " + votingConfiguration);
}

```

Seems "votingConfiguration" has to be empty. Though I don't know what's this.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 18, 2019, 8:04am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/6 "2019-06-18T08:04:06Z")

</div>

Here is the one I'm using:

```auto
---
version: '3'
services:

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1
    environment:
      - bootstrap.memory_lock=true
      - discovery.type=single-node
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      - 9200:9200

```

HTH

---

<div class="post-metadata">

**Author:** ![agreatfool](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/agreatfool/32/48283_2.png) [@agreatfool](https://discuss.elastic.co/u/agreatfool)\
**Post date:** [June 18, 2019, 8:26am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/7 "2019-06-18T08:26:37Z")

</div>

Hi @dadoonet,

Thank you very much, it's ok now. As following your suggestion, using the min configuration.

```
es_1:
  image: "elasticsearch:7.1.1"
  container_name: "es_1"
  hostname: "es_1"
  networks:
    - "net"
  ports:
    - "9200:9200"
  restart: "always"
  logging:
    <<: *ES_LOGGING_DEFAULTS
  environment:
    - bootstrap.memory_lock=true
    - discovery.type=single-node
    - *ES_JAVA_OPTS
  ulimits:
    memlock:
      soft: -1
      hard: -1

```

What I removed:

```
 cluster.name: es_cluster
 node.name=es_1
 http.port=9200
 network.host: 0.0.0.0
 path.data: /usr/share/elasticsearch/data
 path.logs: /usr/share/elasticsearch/logs

```

Maybe you guys could find some hint to enhance the docs. Thanks again.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 18, 2019, 8:53am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/8 "2019-06-18T08:53:29Z")

</div>

I used to set `cluster.name: es_cluster` as well but I removed it from my example as it was not adding value IMO.

I'd not touch `network.host`. `path.data` and `path.logs` are not needed IMO.

> Maybe you guys could find some hint to enhance the docs. Thanks again.

Which part should we change from [Install Elasticsearch with Docker | Elasticsearch Guide [8.11] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html) ? PR are welcomed.

---

<div class="post-metadata">

**Author:** ![agreatfool](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/agreatfool/32/48283_2.png) [@agreatfool](https://discuss.elastic.co/u/agreatfool)\
**Post date:** [June 18, 2019, 9:12am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/9 "2019-06-18T09:12:42Z")

</div>

I just think the error log is a bit too, how to say, "code oriented".

As you can see, I'm not familiar with the implementation of the elasticsearch, just a user. And the error shown in the log file is: "cannot start with [discovery.type] set to [single-node] when local node {es\_1}... does not have quorum in voting configuration VotingConfiguration...".

And it really cannot help me to find what's wrong in the config. As a user, what I want is to know what configuration is invalid, and fix it asap to get the cluster up.

Maybe it's not helpful to you guys. Just some feeling. 😀

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 18, 2019, 10:11am UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/10 "2019-06-18T10:11:39Z")

</div>

> [@agreatfool](#):
>
> And it really cannot help me to find what's wrong in the config.

Why did you change the config in the first place? I mean that the settings you touched are not mentioned in [Install Elasticsearch with Docker | Elasticsearch Guide [8.11] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html) if I'm not mistaken.

---

<div class="post-metadata">

**Author:** ![agreatfool](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/agreatfool/32/48283_2.png) [@agreatfool](https://discuss.elastic.co/u/agreatfool)\
**Post date:** [June 18, 2019, 1:36pm UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/11 "2019-06-18T13:36:54Z")

</div>

I just making some docker experiment, and put all the variables may possible to be modified later into docker env. So...

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 16, 2019, 1:37pm UTC](https://discuss.elastic.co/t/cannot-setup-single-node-elasticsearch-in-docker/186193/12 "2019-07-16T13:37:02Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
