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容器分配足够的内存。

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

你可能感兴趣的:(问题记录,elasticsearch,docker,搜索引擎)