How to use the official docker elasticsearch container? How to use the official docker elasticsearch container? elasticsearch elasticsearch

How to use the official docker elasticsearch container?


I recommend using docker-compose (which makes lot of things much easier) with following configuration.

Configuration (for development)

Configuration starts 3 services: elastic itself and extra utilitiesfor development like kibana and head plugin (these could be omitted, if you don't need them).

In the same directory you will need three files:

  • docker-compose.yml
  • elasticsearch.yml
  • kibana.yml

With following contents:

docker-compose.yml

version: '2'services:  elasticsearch:    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.0    container_name: elasticsearch_540    environment:      - http.host=0.0.0.0      - transport.host=0.0.0.0      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"    volumes:      - esdata:/usr/share/elasticsearch/data      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml    ports:      - 9200:9200      - 9300:9300    ulimits:      memlock:        soft: -1        hard: -1      nofile:        soft: 65536        hard: 65536    mem_limit: 2g    cap_add:      - IPC_LOCK  kibana:    image: docker.elastic.co/kibana/kibana:5.4.0    container_name: kibana_540    environment:      - SERVER_HOST=0.0.0.0    volumes:      - ./kibana.yml:/usr/share/kibana/config/kibana.yml    ports:      - 5601:5601  headPlugin:    image: mobz/elasticsearch-head:5    container_name: head_540    ports:      - 9100:9100volumes:  esdata:    driver: local

elasticsearch.yml

cluster.name: "chimeo-docker-cluster"node.name: "chimeo-docker-single-node"network.host: 0.0.0.0http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: "Authorization"

kibana.yml

server.name: kibanaserver.host: "0"elasticsearch.url: http://elasticsearch:9200elasticsearch.username: elasticelasticsearch.password: changemexpack.monitoring.ui.container.elasticsearch.enabled: true

Running

With above three files in the same directory and that directory set as current working directory you do (could require sudo, depends how you have your docker-compose set up):

docker-compose up

It will start up and you will see logs from three different services: elasticsearch_540, kibana_540 and head_540.

After initial start up you will have your elastic cluster available for http under 9200 and for tcp under 9300. Validate with following curl if the cluster started up:

curl -u elastic:changeme http://localhost:9200/_cat/health 

Then you can view and play with your cluster using either kibana (with credentials elastic / changeme):

http://localhost:5601/

or head plugin:

http://localhost:9100/?base_uri=http://localhost:9200&auth_user=elastic&auth_password=changeme


Your container is auto exiting because of insufficient virtual memory, by default to run an elastic search container your memory should be a min of 262144 but if you run this command sysctl vm.max_map_countand see it will be around 65530. Please increase your virtual memory count by using this command sysctl -w vm.max_map_count=262144 and run the container again docker run IMAGE IDthen you should have your container running and you should be able to access elastic search at port 9200 or 9300

edit : check this link https://www.elastic.co/guide/en/elasticsearch/reference/5.0/vm-max-map-count.html#vm-max-map-count


Best would be to follow the official elasticsearch documentation which has a nice section on single node elasticsearch cluster Also running a multi-node elasticsearch cluster using docker-compose.

Please refer to version specific documentation, which can be accessed in the version drop-down present in elasticsearch official documentation.