Docker 部署 Elasticsearch
1. 官方镜像地址
https://hub.docker.com/_/elasticsearch/
2. 拉取镜像
docker pull elasticsearch:7.4.0
3.准备数据存放目录
这里设置的数据存放处为
/sxapp/docker-data/elasticsearch
4.启动
创建网络
docker network create es-network
执行指令启动 Elasticsearch
docker run -d --name es \
--net es-network \
-p 9200:9200 \
-p 9300:9300 \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
elasticsearch:7.4.0
命令说明:
- 9200 :表示 elasticsearch 作为Http协议,主要用于外部通讯
- 9300 : 表示 elasticsearch 作为Tcp协议,jar之间就是通过tcp协议通讯;ES集群之间是通过9300进行通讯
5.访问
访问控制台
- 地址:http://ip:9200/
常见问题
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
[2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
第一个错误
是因为ES需要jvm内存不足,所有我们需要改一下配置
执行命令
sysctl -w vm.max_map_count=655360
第二个错误
这个命令是要在Docker中创建elasticsearch集群网络,需要一个默认网络才可以启动。
docker network create es-network
docker run -d --name es \
--net es-network \
-p 9200:9200 \
-p 9300:9300 \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
elasticsearch:7.4.0