如何使用官方docker elasticsearch容器?

Com*_*ode 8 elasticsearch docker elasticsearch-plugin dockerfile docker-machine

我有以下Dockerfile:

FROM docker.elastic.co/elasticsearch/elasticsearch:5.4.0
RUN elasticsearch
EXPOSE 80
Run Code Online (Sandbox Code Playgroud)

我认为第3行永远不会到达.

当我尝试通过本地机器访问dockercontainer时:172.17.0.2:9300

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

sla*_*wek 30

我建议使用以下配置使用docker-compose(这使得很多事情变得更容易).

配置(用于开发)

配置启动3个服务:弹性本身和额外的开发实用程序,如kibana和head plugin(如果你不需要它们,可以省略它们).

在同一目录中,您将需要三个文件:

  • 泊坞窗,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
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

运行

将上述三个文件放在同一个目录中并将该目录设置为当前工作目录(可能需要sudo,取决于你如何设置docker-compose):

docker-compose up
Run Code Online (Sandbox Code Playgroud)

它会启动,你会看到日志从三个不同的服务: elasticsearch_540,kibana_540head_540.

初次启动后,您的弹性群集可用于9200以下的http 和9300以下的tcp .如果群集已启动,请使用以下curl进行验证:

curl -u elastic:changeme http://localhost:9200/_cat/health 
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用kibana(凭据弹性/ changeme)查看和使用您的群集:

http://localhost:5601/
Run Code Online (Sandbox Code Playgroud)

或头部插件:

http://localhost:9100/?base_uri=http://localhost:9200&auth_user=elastic&auth_password=changeme
Run Code Online (Sandbox Code Playgroud)