# Connecting to port 9300 running inside a Docker container

**URL:** <https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916>\
**Category:** Elasticsearch\
**Tags:** docker\
**Created:** [March 17, 2020, 11:59am UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916 "2020-03-17T11:59:35Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![calin](https://avatars.discourse-cdn.com/v4/letter/c/a87d85/32.png) [@calin](https://discuss.elastic.co/u/calin)\
**Post date:** [March 17, 2020, 11:59am UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916/1 "2020-03-17T11:59:35Z")

</div>

I think I have the same issue as here:

> [@No node available : Elasticsearch Transport Client can't connect to Docker container](https://discuss.elastic.co/t/no-node-available-elasticsearch-transport-client-cant-connect-to-docker-container/94883/6):
>
> Can you share the logs of your node?

But I am not sure how to implement the fix.

Elastic (5.4.3) running in Docker, started with docker-compose.  
The relevant part of the docker-compose is:

```
my-elastic:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.3
    container_name: my-elastic
    environment:
        - cluster.name=elasticsearch
        - xpack.security.enabled=false
        - discovery.type=single-node
        - bootstrap.memory_lock=true
        - "ES_JAVA_OPTS=-Xms1024m -Xmx3g"
    ulimits:
        memlock:
            soft: -1
            hard: -1
    mem_limit: 4g
    volumes:
        - ../../data/elasticsearch/data:/usr/share/elasticsearch/data
    ports:
        - 9200:9200
        - 9300:9300

```

When running a Java container as part of the docker-compose, it has no problem connecting to the elastic cluster (using port 9300 - an older connector; disclaimer: I didn't write the app, but I have to fix it).

However, when trying to run the java container on the host:

```
Adding transport node: localhost:9300
...
org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: [{#transport#-1}{MyNFks6oRdCFAS0LRj3rRQ}{localhost}{127.0.0.1:9300}]

```

I tried adding

```
        - network.bind_host=0.0.0.0

```

to the environment, but it didn't help.

Any help would be greatly appreciated.

Thanks.

---

<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:** [March 17, 2020, 4:50pm UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916/2 "2020-03-17T16:50:21Z")

</div>

How do you build the `TransportClient`?

---

<div class="post-metadata">

**Author:** ![calin](https://avatars.discourse-cdn.com/v4/letter/c/a87d85/32.png) [@calin](https://discuss.elastic.co/u/calin)\
**Post date:** [March 18, 2020, 9:10am UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916/3 "2020-03-18T09:10:56Z")

</div>

> [@dadoonet](#):
>
> TransportClient

```
public static Client createTransportClient(String clusterNodes, String clusterName) throws Exception {
    logger.info("Creating Elasticsearch transport client");
    Settings settings = Settings.builder().put("cluster.name", clusterName).put("client.transport.sniff", true).build();
    TransportClient client = new PreBuiltTransportClient(settings);

    if (StringUtils.isNotEmpty(clusterNodes)) {
        for (String clusterNode : StringUtils.split(clusterNodes, ',')) {
            String hostName = StringUtils.substringBeforeLast(clusterNode, ":");
            String port = StringUtils.substringAfterLast(clusterNode, ":");
            Assert.hasText(hostName, "[Assertion failed] missing host name in 'clusterNodes'");
            Assert.hasText(port, "[Assertion failed] missing port in 'clusterNodes'");
            logger.info("Adding transport node: " + clusterNode);
            client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostName), Integer.valueOf(port)));
        }
        client.connectedNodes();
    }
    logger.info(client.admin().cluster().prepareHealth().get().toString());
    return client;
}

```

Disclaimer: this is not my code and I am rather new to Elasticsearch, so I don't know if this code is good or bad.

Thanks for your help.

---

<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:** [March 18, 2020, 10:46am UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916/4 "2020-03-18T10:46:03Z")

</div>

What is the value for `clusterName`?

---

<div class="post-metadata">

**Author:** ![calin](https://avatars.discourse-cdn.com/v4/letter/c/a87d85/32.png) [@calin](https://discuss.elastic.co/u/calin)\
**Post date:** [March 18, 2020, 10:59am UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916/5 "2020-03-18T10:59:09Z")

</div>

elasticsearch

---

<div class="post-metadata">

**Author:** ![calin](https://avatars.discourse-cdn.com/v4/letter/c/a87d85/32.png) [@calin](https://discuss.elastic.co/u/calin)\
**Post date:** [March 19, 2020, 10:33am UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916/6 "2020-03-19T10:33:00Z")

</div>

> [@dadoonet](#):
>
> What is the value for `clusterName` ?

Hi @dadoonet,

the clusterName is elasticsearch.

Is there any hope for me to fix this please ?

Thank you.

---

<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:** [March 19, 2020, 10:52am UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916/7 "2020-03-19T10:52:12Z")

</div>

It looks good. May be a firewall issue with port 9300 which is actually blocked?

Could you share the logs of your elasticsearch instance?

---

<div class="post-metadata">

**Author:** ![calin](https://avatars.discourse-cdn.com/v4/letter/c/a87d85/32.png) [@calin](https://discuss.elastic.co/u/calin)\
**Post date:** [March 20, 2020, 6:30pm UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916/8 "2020-03-20T18:30:17Z")

</div>

Seems like the issue is caused by client.transport.sniff set to true.

```
Settings settings = Settings.builder()
                            .put("cluster.name", clusterName)
// .put("client.transport.sniff", true)
                        .build();
TransportClient client = new PreBuiltTransportClient(settings);

```

I have commented out that line and now it works.

However, I would still like to understand why.

It seems that a lot of people complained about not being able to connect to Docker containers and also there are lots of issues with the client.transport.sniff.

But despite reading a whole bunch of issues and replies and such, I still couldn't find an explanation. Which part of what client.transport.sniff does causes the issue ?

Regardless of whether you can answer this question, thank you for your help.

---

<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:** [April 3, 2020, 3:48pm UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916/9 "2020-04-03T15:48:13Z")

</div>

I honestly don't know.

But anyway, you should not use this `TransportClient` anymore. It's removed in the next major version.

---

<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:** [May 1, 2020, 3:48pm UTC](https://discuss.elastic.co/t/connecting-to-port-9300-running-inside-a-docker-container/223916/10 "2020-05-01T15:48:14Z")

</div>

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