Docker 上安装 Elasticsearch 5
在DOCKER中安装Elasticsearch与普通集群上安装基本一致,只是有几个问题需要注意下。
1、Docker容器不能持久保存配置信息与数据,所以需要增加两个卷,数据卷与配置卷:
在Dockerfile中增加:
VOLUME ["/usr/local/elasticsearch/config"]
VOLUME ["/usr/local/elasticsearch/data"]
在容器启动时通过 -V 参数进行挂载。
权限问题,容器启动后,会发现挂载的卷只有root用户能读写,其他用户没有权限,所以我们需要在宿主机中创建一个用户,比如 elasticsearch 用户ID为1001(容器中创建的elasticsearch用户ID要与该ID相同),将以上两目录的权限授给它:
chown -R elastchsearch /usr/local/elasticsearch
2、启动用户的配置,elasticsearch 不能通过root用户启动,需要创建用户,在dockerfile中:
RUN useradd -d "/home/elasticsearch" -u 1001 -m -s /bin/bash elasticsearch
在supervisord.conf文件中配置:
[program:elasticsearch]
user=elasticsearch --elasticsearch启动用户
stdout_logfile=/usr/local/elasticsearch/es.log --elasticsearch启动日志
environment=JAVA_HOME=/usr/local/jdk --环境变量
command=/bin/bash -c "exec ${ES_HOME}/bin/elasticsearch"
3、修改容器中的系统参数,vm.max_map_count。
在Dockerfile中增加:
COPY myinit.sh /bin/myinit.sh
RUN chmod +x /bin/myinit.sh
myinit.sh文件内容:
echo vm.max_map_count=262144 >> /etc/sysctl.conf
sysctl -p
在supervisord.conf中增加:
[program:myinit.sh]
stdout_logfile=/myinit.log
command=/bin/sh /bin/myinit.sh
在启动容器时,需要加上提升特权参数:--privileged