docker 安装elasticsearch镜像,制作容器
docker pull elasticsearch-7.9.3
docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 elasticsearch:7.9.3
- 查看容器是否成功,然后启动
docker ps -a
docker start 14fd7ef73b99
- 再次查看发现 没有成功启动
#执行进入容器命令
docker exec -it 30a29a905ebb /bin/bash
- 发现容器没有成功启动
#查看容器日志
docker logs --since 30m 14fd7ef73b99
发现报错了,一查原来这是由于elasticsearch默认分配jvm空间大小为1g-2g,内存不足以分配导致。
解决方法就是修改jvm空间分配
找到jvm.options配置文件
find /var/lib/docker/overlay/ -name jvm.options
- vi进入jvm.options
图示部分修改为
-Xms512m
-Xmx512m
2)启动报错:
ERROR: [2] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2] the default discovery settin:gs are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
原因:官方的elasticsearch缺少配置,需要配置两处地方
- 修改max_map_count大小
sysctl -w vm.max_map_count=262144
限制一个进程可以拥有的VMA(虚拟内存区域)数量
- 查看max_map_count,确保修改成功
sysctl -a|grep vm.max_map_count
- 修改:/etc/security/limits.conf 在文档尾追加
- soft nofile 65536
- hard nofile 65536
nofile 是单个进程允许打开的最大文件个数
soft nofile 是软限制 hard nofile 是硬限制
- 跳转目录
cd /var/lib/docker/overlay2/
- 找到elasticsearch.yml配置文件
find . -name “elasticsearch.yml”
- vi进入配置文件,在配置文件中增加两行配置
bootstrap.system_call_filter: false
cluster.initial_master_nodes: [“node-1”]
然后Esc 保存:wq! 退出!重新启动就OK了!