太长不看,一句话总结
内存太小,启动命令中添加参数修改虚拟机大小即可
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" -d -p 9200:9200 -p 9300:9300 --name elasticsearch elasticsearch:7.6.0
配置了属性single-node,否则会不停报warn日志
可能需要设置max_map_count,见下文
Docker搭建Elasticsearch方法
前往dockerhub官网:dockerhub 可查看elasticsearch相应版本
拉取镜像
选取一个版本拉取镜像,如docker pull elasticsearch:6.8.8
不输入版本默认拉取最新版
启动容器
映射端口为9200和9300
docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch elasticsearch:6.8.8
验证安装
通过docker ps
查看已启动容器
输入http://ip地址:9200
可以看到返回的json数据,证明安装成功
启动后服务自动关闭的问题
通过docker run
命令启动容器后,docker会返回一串码代表成功启动,但是再通过docker ps
查看已启动容器,发现elasticsearch并未启动成功
通过docker ps -a
可以发现elasticsearch自动退出
查看容器异常日志
docker ps -a
可以查看到刚退出的elasticsearch容器,复制容器id
通过docker logs -f 容器id
查看日志,可以看到提示空间不足
jvm分配的内存大于系统可用内存数,所以没有足够的空间分配新空间了
需要前往jvm.options文件修改jvm启动参数
使用命令find / -name jvm.options
找到jvm.options文件位置
通过vim 文件位置
命令进入该文件
找到xms参数位置,将分配空间修改小一些,减小值到系统可用的值,如
-Xms512m
-Xmx512m
linux文件相关命令
vim进入文件,如vim /etc/conf/a.conf
shift + 键盘 ; 键,使文件进入可查询状态,输入 / + 查询内容,如/a.conf
键盘 i 键,让文件进入编辑状态,esc键退出编辑
保存修改:shift + 键盘 ; 键,然后输入wq!
不保存修改:shift + 键盘 ; 键,然后输入q!
有可能报max_map_count [65530] is too low之类的错误,需要重置max_map_count大小
如sysctl -w vm.max_map_count=262144
查看max_map_count
sysctl -a|grep vm.max_map_count
然后重新启动容器
ps.
容器启动失败后,需要进入docker ps -a
并记下容器id
然后通过docker rm 容器id
删除当前容器,才可重新启动
pps.
如果是通过阿里云/腾讯云等云服务器的docker部署,千万不要忘记开放端口号!!!!!!!