我有以下Dockerfile:
FROM docker.elastic.co/elasticsearch/elasticsearch:5.4.0 RUN elasticsearch EXPOSE 80
我认为第三条线从未到达。
当我尝试通过以下方式从本地计算机访问dockercontainer时:172.17.0.2:9300
我什么也没得到,我想念什么?我想从本地主机访问elasticsearch。
我建议通过以下配置使用docker-compose(这使很多事情变得更加容易)。
配置启动了3个服务:弹性本身和用于开发的额外实用程序,例如kibana和head插件(如果不需要它们,可以将其省略)。
在同一目录中,您将需要三个文件:
具有以下内容:
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: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
它会启动,你会看到日志从三个不同的服务: elasticsearch_540,kibana_540和head_540。
elasticsearch_540
kibana_540
head_540
初始启动后,您将为 9200 以下的http 和 9300 以下的tcp 提供弹性集群。如果集群已启动,请使用以下curl进行验证:
curl -u elastic:changeme http://localhost:9200/_cat/health
然后,您可以使用任何一个kibana(凭证为elastic / changeme)查看和使用集群:
http://localhost:5601/
或头插件:
http://localhost:9100/?base_uri=http://localhost:9200&auth_user=elastic&auth_password=changeme