Docker安装Elasticsearch

今天尝试在docker下安装elasticsearch各种报错与总结

安装过程

  docker images看了一下里边是有elasticsearch镜像的所以不用下载了,如果没有docker pull elasticsearch

  docker run -d elasticsearch试了一下没问题可以启动成功

  真是工作中我们需要挂在虚拟路径

docker run -d --name es_gy -p 9200:9200 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /usr/local/gyserver/db/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /usr/local/gyserver/db/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/gyserver/db/elasticsearch/conf:/usr/share/elasticsearch/config \
elasticsearch:7.6.2

  哎呀命令运行成功了,但是服务一会儿就停掉了,看来是报错了

  docker logs es_gy (es_gy 为镜像名,也可以用镜像id,docker ps -a 可以看到)

  日志有点长不太想看,既然不带参数可以启动成功那么肯定是某一行参数出现了问题那么挨个尝试吧,最终发现

-v /usr/local/gyserver/db/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/gyserver/db/elasticsearch/conf:/usr/share/elasticsearch/config \

  增加这两行就无法正常启动了,仔细查看了这两行命令仅仅是做了虚拟路径挂在理论上不应该出现什么问题啊

分析

  我们在Linux环境中安装elasticsearch是需要为elasticsearch创建用户及授权的,那么docker要挂在虚拟路径是不是也存在权限问题呢,试一下看看(chown -R elasticsearch.root *)

  更改权限后data目录成功了,但是config 仍然不行

  睡了一觉突然想起来docker安装其他的mysql啊redis好像都只挂在了config文件而不是路径不知道单独挂载文件试下是否可行于是乎(如果想挂载文件夹需要创建config下的所有配置文件)

docker run -d --name es_gy -p 9200:9200 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /usr/local/gyserver/db/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /usr/local/gyserver/db/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/gyserver/db/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
elasticsearch:7.6.2

  好像成功了!!!!!

  修改一下宿主机的配置文件然后去看看docker容器里的配置文件有没有修改!!咦没有同步修改。。。为什么?

  重启下试试 docker restart es_gy 

  再来!!修改成功配置文件通不过去了!!!接下来就可以尽情的玩耍了!

总结:

  config文件夹不能是空空的 进行挂载是因为es启动时需要读这些配置,读不到启动直接报错了,而data文件夹是启动以后创建文件,只要有权限就可以创建

posted @ 2021-08-26 14:01  Zz~  阅读(460)  评论(0编辑  收藏  举报