docker 启动elasticsearch镜像,挂载目录后报错的解决_docker

这篇文章主要介绍了docker 启动 elasticsearch镜像,挂载目录后报错的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

从docker hub下载了一个es的镜像,版本为6.4.2,详细信息如下:

图片[1]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

比较重要的就是这两条,第一个是工作目录,挂载目录也需要和这里对应;第二个是启动命令,这里是指定了一个预先写好的启动脚本。所以我启动了一个空容器去查看了下容器内的情况:

图片[2]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

容器内部目录结构如上图,data是用来存放数据,logs用来存放日志。

接着查看下启动脚本

/usr/local/bin/docker-entrypoint.sh

图片[3]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

前半部分我也是看的一知半解,不过真正和挂载目录相关的是最后这部分,这里处理了挂载目录后的操作,大致意思是:

如果是root用户(docker启动容器,默认是以root用户身份),并且 TAKE_FILE_OWNERSHIP 变量存在,则将/usr/share/elasticsearch/{data,logs},这两个目录都改变为1000用户所属(这里也可以看到最终存储数据的路径为data,所以挂载时应该挂载到data下)。

id为1000的用户:

图片[4]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

正是elasticsearch用户,所以如果不挂载任何目录直接启动容器即可,如果挂载,那么就添加一个变量,任意赋值,es可以正常启动。

docker run -itd -v /root/es-data/:/usr/share/elasticsearch/data -e TAKE_FILE_OWNERSHIP=111 -p 9200:9200 –name es elasticsearch:6.4.2

补充知识:记一次docker安装elasticsearch及遇到的坑

先给一行命令

docker run -d -p 9200:9200 -p 9300:9300 -e “ES_JAVA_OPTS=-Xms512m -Xmx512m” –name=<your es name> elasticsearch:<es version>

使用该命令可直接安装并运行es的docker 镜像容器

问题

使用命令docker run -d -p 9200:9200 -p 9300:9300 –name=<your es name> elasticsearch:<es version>启动, 然后想看是否启动起来了,于是使用docker ps命令发现:

图片[5]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

es并未启动起来。

于是又用docker ps -a命令:

图片[6]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

发现启动终止了。

然后用docker logs -f <container id>命令查看es的启动日志:

图片[7]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

拉到最下面:

图片[8]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

长这样:

power management:

Memory: 4k page, physical 1882892k(89076k free), swap 0k(0k free)

vm_info: OpenJDK 64-Bit Server VM (25.181-b13) for linux-amd64 JRE (1.8.0_181-8u181-b13-2~deb9u1-b13), built on Oct 22 2018 18:05:23 by \"pbuilder\" with gcc 6.3.0 20170516

time: Fri Nov 23 07:00:34 2018
elapsed time: 0 seconds (0d 0h 0m 0s)

于是复制报错信息Google一波,发现问题所在。elasticsearch5.+配置默认的内存是2g。我给docker的内存也只有2g,于是就GG了。

删除了旧容器,和旧镜像后,在docker启动命令中加上-e “ES_JAVA_OPTS=-Xms512m -Xmx512m”解决问题

图片[9]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

docker ps :

图片[10]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

最后访问一波9200端口:

图片[11]-docker 启动elasticsearch镜像,挂载目录后报错的解决_docker-安全小天地

OJBK

以上这篇docker 启动elasticsearch镜像,挂载目录后报错的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持安全小天地。

------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞9 分享
Everyone has its disadvantage just like the god bites the apple. the bigger disadvantage you have, the more the god appreciate it.
每个人都会有缺陷,就像被上帝咬过的苹果,有的人缺陷比较大,正是因为上帝特别喜欢他的芬芳
评论 抢沙发

请登录后发表评论

    暂无评论内容