Docker中部署及启动Elasticsearch需规避坑
遇坑摘要
作者环境
腾讯云,轻量应用服务器,Docker部署Elasticsearch7.4.2
下面简称ES
开始了开始了昂!
基操
拉取ES7.4.2镜像
]# docker pull elasticssearch:7.4.2
问题出现
运行ES7.4.2镜像
docker run -p 9200:9200 -p 9300:9300 -v /var/docker/elasticsearch/data:/data elasticsearch:7.4.2
命令行说明,docker run就不说了,-p是选项开放端口,开放了docker的9200、9300端口,分别映射ES容器的9200、9300端口。-v 前台界面显示启动日志,不然出了问题还得用docker logs 查
# docker logs查启动日志语句
]# docker logs --tail 300 -f 27ce
# 27ce是我启动失败容器的前几个字
你要是问我启动失败容器在哪里查的?在这
问题
这家伙,run没跑起来,告诉我了两个错
第一个, max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]。什么意思,意思我不够大,我得大起来
第二个, 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。也是,它说我没起名,没配置。咱们一个一个开始解决
解决max virtual memory,最大虚拟内容
它不是告诉你,你要把65530改成262144吗,改它
]# sysctl -w vm.max_map_count=262144
第一个这就解决了
解决配置问题,cluster.initial_master_nodes你得配
这家伙,我容器没起来呢,我怎么进ES容器内改它的elasticsearch.yml文件?docker exec肯定不好使了呗。
那咱们就不进,所有容器内的文件,那容器外也都查的到。咱们用find命令去查
# 查询语句
]# find ./ -name elasticsearch.yml
# 结果
./var/lib/docker/overlay2/1c3a17143c85b0b349cc364a01c3de3cd61929f5d3e4e0d4a661450c29c5a8bf/diff/usr/share/elasticsearch/config/elasticsearch.yml
你看看,人家这不就告诉你位置了,vim 改就行。
]# vim ./var/lib/docker/overlay2/1c3a17143c85b0b349cc364a01c3de3cd61929f5d3e4e0d4a661450c29c5a8bf/diff/usr/share/elasticsearch/config/elasticsearch.yml
改成这样
解决完了
直接再次跑一遍docker run命令就行了,玩吧