docker elasticsearch官方容器如何使用?
How to use the official docker elasticsearch container?
我有以下 Dockerfile:
FROM docker.elastic.co/elasticsearch/elasticsearch:5.4.0
RUN elasticsearch
EXPOSE 80
我认为第 3 行永远不会到达。
当我尝试通过以下方式从本地计算机访问 dockercontainer 时:
172.17.0.2:9300
我一无所获,我错过了什么?我想从本地主机访问elasticsearch。
您的容器由于虚拟内存不足而自动退出,默认情况下 运行 一个弹性搜索容器您的内存应该是 262144
的最小值,但是如果您 运行 此命令sysctl vm.max_map_count
看到它将在 65530 左右。请使用此命令增加虚拟内存计数 sysctl -w vm.max_map_count=262144
并再次 运行 容器 docker run IMAGE ID
然后你应该有你的容器 运行ning 你应该可以在 9200 或 9300 端口访问弹性搜索
编辑:检查这个 link https://www.elastic.co/guide/en/elasticsearch/reference/5.0/vm-max-map-count.html#vm-max-map-count
我建议使用 docker-compose(这使很多事情变得容易得多)和以下配置。
配置(用于开发)
配置启动 3 个服务:elastic 本身和额外的实用程序
用于像 kibana 和 head 插件这样的开发(如果不需要,可以省略)。
在同一目录中,您需要三个文件:
- docker-compose.yml
- elasticsearch.yml
- kibana.yml
内容如下:
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
。
初始启动后,您的弹性集群将可用于 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
最好遵循官方的 elasticsearch 文档,其中有一个很好的部分 single node elasticsearch cluster Also running a multi-node elasticsearch cluster using docker-compose。
请参阅版本特定文档,可以在 elasticsearch 官方文档中的版本下拉列表中访问。
我有以下 Dockerfile:
FROM docker.elastic.co/elasticsearch/elasticsearch:5.4.0
RUN elasticsearch
EXPOSE 80
我认为第 3 行永远不会到达。
当我尝试通过以下方式从本地计算机访问 dockercontainer 时: 172.17.0.2:9300
我一无所获,我错过了什么?我想从本地主机访问elasticsearch。
您的容器由于虚拟内存不足而自动退出,默认情况下 运行 一个弹性搜索容器您的内存应该是 262144
的最小值,但是如果您 运行 此命令sysctl vm.max_map_count
看到它将在 65530 左右。请使用此命令增加虚拟内存计数 sysctl -w vm.max_map_count=262144
并再次 运行 容器 docker run IMAGE ID
然后你应该有你的容器 运行ning 你应该可以在 9200 或 9300 端口访问弹性搜索
编辑:检查这个 link https://www.elastic.co/guide/en/elasticsearch/reference/5.0/vm-max-map-count.html#vm-max-map-count
我建议使用 docker-compose(这使很多事情变得容易得多)和以下配置。
配置(用于开发)
配置启动 3 个服务:elastic 本身和额外的实用程序 用于像 kibana 和 head 插件这样的开发(如果不需要,可以省略)。
在同一目录中,您需要三个文件:
- docker-compose.yml
- elasticsearch.yml
- kibana.yml
内容如下:
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
。
初始启动后,您的弹性集群将可用于 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
最好遵循官方的 elasticsearch 文档,其中有一个很好的部分 single node elasticsearch cluster Also running a multi-node elasticsearch cluster using docker-compose。
请参阅版本特定文档,可以在 elasticsearch 官方文档中的版本下拉列表中访问。