Docker部署elasticsearch和kibana踩坑

在学习elasticsearch的时候,我安装黑马程序员的课程,将es部署到服务器的docker上。

es部署代码如下:

docker run -d \ --name es \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -e "discovery.type=single-node" \ -v es-data:/usr/share/elasticsearch/data \ -v es-plugins:/usr/share/elasticsearch/plugins \ --privileged \ --network es-net \ -p 9200:9200 \ -p 9300:9300 \ elasticsearch:7.12.1

kibana部署代码如下:

docker run -d \ --name kibana \ -e ELASTICSEARCH_HOSTS=http://es:9200 \ --network=es-net \ -p 5601:5601 \ kibana:7.12.1

在服务器执行这两段代码后,docker ps显示两个容器正在运行,但之后很快服务器就奔溃,然后Xshell卡住,在卡组一个小时后恢复正常,在去服务器执行docker ps,发现容器退出了。

更具排除,报错原因是因为在部署ES的时候,因为ES是Java实现的,所以在启动ES时,需要为es指定jvm内存参数,黑马程序员的教程中,为ES指定的内存是512m。

我的服务器内存是2g,按道理应该能有住够的空间运行es,但其实在运行docker容器时,linux系统为docker分配的空间其实没有512m,但在docker容器内部却要为内部的es分配512的内存,导致内存不足,参数OOM(out of mereny)c错误。

解决方法:在启动ES容器时,为容器指定参数-m 1000m,手动为docker容器分配足够的内存。

或者部署到一条内存打一点的服务器也可以。

原文链接:https://blog.csdn.net/qq_45171957/article/details/123266038?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171836884016800178512381%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171836884016800178512381&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-24-123266038-null-null.nonecase&utm_term=docker%E9%83%A8%E7%BD%B2

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享