docker 启动 elasticsearch镜像,挂载目录后报错问题
从docker hub下载了一个es的镜像,版本为6.4.2,详细信息如下:比较重要的就是这两条,第一个是工作目录,挂载目录也需要和这里对应;第二个是启动命令,这里是指定了一个预先写好的启动脚本。所以我启动了一个空容器去查看了下容器内的情况:容器内部目录结构如上图,data是用来存放数据,logs用来存放日志。接着查看下启动脚本/usr/local/bin/do...
·
从docker hub下载了一个es的镜像,版本为6.4.2,详细信息如下:
比较重要的就是这两条,第一个是工作目录,挂载目录也需要和这里对应;第二个是启动命令,这里是指定了一个预先写好的启动脚本。所以我启动了一个空容器去查看了下容器内的情况:
容器内部目录结构如上图,data是用来存放数据,logs用来存放日志。
接着查看下启动脚本
/usr/local/bin/docker-entrypoint.sh |
前半部分我也是看的一知半解,不过真正和挂载目录相关的是最后这部分,这里处理了挂载目录后的操作,大致意思是:
如果是root用户(docker启动容器,默认是以root用户身份),并且 TAKE_FILE_OWNERSHIP 变量存在,则将/usr/share/elasticsearch/{data,logs},这两个目录都改变为1000用户所属(这里也可以看到最终存储数据的路径为data,所以挂载时应该挂载到data下)。
id为1000的用户:
正是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
更多推荐
已为社区贡献6条内容
所有评论(0)