It should be simple and in the end it was relatively simple – but still I was struggling a little bit with getting two key components of the Elastic Stack running on Oracle Container Cloud, working together and exposed to the world. For my future reference, here is the configuration I got to work:
I have defined a Service for Elastic Search – based on the official image published by Elastic:
The discovery.type is set to single-node to prevent running into an issue with the number of file descriptors being too low (see references)
The Docker run command associated with these settings:
docker run \
-p=9200:9200/tcp \
-p=9300:9300/tcp \
–name=elasticsearch \
-e=”discovery.type=single-node” \
“docker.elastic.co/elasticsearch/elasticsearch:6.4.0”
Note that the container started from this service is explicitly named elasticsearch. This is done for the link defined for the Kibana service to work correctly.
A second Service is defined for Kibana – one that has a reference to the first one:
Note the Link defined for the container called elasticsearch . The default port 5601 is mapped to the host port 7000 (that should not be needed but for me 5601 did not work)
The Docker run command:
docker run \
-e=”ELASTICSEARCH_URL=http://elasticsearch:9200″ \
-e=”occs:description=docker.elastic.co/kibana/kibana:6.4.1″ \
–link=elasticsearch:elasticsearch \
-p=7000:5601/tcp \
“docker.elastic.co/kibana/kibana:6.4.1”
The first service can be deployed using Deploy:
The second service can then also be started
This second service starts Kibana that will contact Elastic Search, leveraging the link to the first container.
Now containers are running for both services:
They expose ports 9200 and 9300 for Elastic Search and 7000 for Kibana on the Host. I can get the public IP for the Host and therefore I can now access both Elastic components:
Kibana has linked up with Elastic Search and can now visualize its data.