Skip to content
Oliver Eilhard edited this page Jul 14, 2018 · 10 revisions

Background

If you are running Elasticsearch inside Docker, you need to make sure that Elasticsearch returns an IP address that is accessible from outside of the container. You can do that by specifying the network.publish_host (or network.host) setting, as stated in the Elasticsearch documentation:

The network.publish_host setting allows to control the host the node will publish itself within the cluster so other nodes will be able to connect to it. Of course, this can’t be the anyLocalAddress, and by default, it will be the first non loopback address (if possible), or the local address.

The network.host setting is a simple setting to automatically set both network.bind_host and network.publish_host to the same host value.

If you don't configure your Elasticsearch inside Docker, the sniffing process won't work. You can either disable sniffing, or configure the network settings.

Example repository

For convenience, I've created a repository that you can use as an example on how to use Elastic with Docker / Docker Compose.

Running Elasticsearch in Docker

The repository has a list of scripts that you can use to run Elasticsearch in e.g. Docker for Mac (other untested). E.g. Elastic version 5 comes with ./run-es.sh which starts the current version of Elasticsearch 5.x. Please review these files and settings if you run into trouble with Docker and Elasticsearch.