如何使用官方的docker elasticsearch容器?

我有以下的Dockerfile:

FROM docker.elastic.co/elasticsearch/elasticsearch:5.4.0 RUN elasticsearch EXPOSE 80 

我认为第三条线是永远不会到达的。

当我尝试从我的本地计算机通过172.17.0.2:9300访问dockercontainer时

我什么也没得到,我错过了什么? 我想从本地主机访问elasticsearch。

我build议使用docker-compose(这使得很多事情更容易),以下configuration。

configuration(用于开发)

在同一个文件夹中,你需要三个文件:

  • 泊坞窗,compose.yml
  • elasticsearch.yml
  • kibana.yml

以下内容:

泊坞窗,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:9100 volumes: esdata: driver: local 

elasticsearch.yml

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

kibana.yml

 server.name: kibana server.host: "0" elasticsearch.url: http://elasticsearch:9200 elasticsearch.username: elastic elasticsearch.password: changeme xpack.monitoring.ui.container.elasticsearch.enabled: true 

运行

以上三个文件在一个文件夹和该文件夹设置为当前工作目录(可能需要sudo,取决于你如何设置docker-compose):

 docker-compose up 

它会启动,你会看到三个不同的服务日志: kibana_540kibana_540head_540

初始启动后,您将拥有9200以下的http和9300以下的tcp可用的弹性集群。 如果集群启动,则以下面的curlvalidation:

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

然后你可以使用kibana(凭证弹性/ changeme):

 http://localhost:5601/ 

或者头部插件:

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

你的容器是由于虚拟内存不足而自动退出,默认情况下运行一个弹性search容器,你的内存应该是262144分钟,但是如果你运行这个命令, sysctl vm.max_map_count并且看到它会在65530左右。请增加你的虚拟内存通过使用此命令计数sysctl -w vm.max_map_count=262144并再次运行容器sysctl -w vm.max_map_count=262144 docker run IMAGE ID那么你应该让你的容器运行,你应该能够在9200或9300端口进行弹性search

编辑:检查这个链接https://www.elastic.co/guide/en/elasticsearch/reference/5.0/vm-max-map-count.html#vm-max-map-count