1.首先从国内下载elasticsearch镜像
docker pull registry.docker-cn.com/library/elasticsearch
2.启动docker
由于这里我使用的阿里云的轻量级学生服务器 内存只有2个g
这里我们必须指定elasticsearch的jvm内存大小才能启动成功,之前我没有注意到这个问题,多次启动都失败了,
设置jvm内存大小来启动elasticsearch命令如下:
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name elasticsearch 5acf0e8da90
这里的5acf0e8da90是我elasticsearch的镜像id 就是imagesid(写名字也可以)
3.启动成功后 只能访问9200 而访问不了9300
启动成功后 我telnet了9200、9300发现 9200可以访问,9300不能访问,是因为之前在本地调试,9200,9300都能访问,但是如果你要部署到服务器9300是访问不了的,因此下文为记录解决9300能访问的方法:
先执行
docker exec -it elasticsearch /bin/bash
进入 docker里面的elasticsearch容器
进入后 cd config 如下图所示
这里 修改config目录下的elasticserach.yml
执行
vim elasticsearch.yml
这里会报错 找不到vim命令 由于在容器里面是没有vim的命令的 这时候需要更新
apt-get update
apt-get install vim
下载完vim 后我们修改elasticsearch.yml的配置文件信息
将transport.host=0.0.0.0的注销去掉 然后保存退出
重启elasticsearch 容器
docker restart elasticsearch
注意 这里我们重启后 使用docker ps 看容器里的内容 elasticsearch会挂掉 这个时候就不是es的问题了 而是我们宿主机的配置没有调优
接下来我们进行宿主机的系统调优(如果调优过得话就不用了,也不会出现挂点的情况)
修改/etc/security/limit.conf,添加以下内容(软件 硬件允许打开最大文件个数)
* soft nofile 65535
* hard nofile 65535
修改/etc/sysctl.conf 添加以下内容 (限制一个进程可以拥有的VMA虚拟内存区域的数量)
vam.max_map_count=655360
然后reboot 重启计算机
重启计算机之后 我们再docker restart elasticsearch
然后docker ps -a 观察 es状态 就不会再挂掉了
至此 docker 里部署elasticsearch完成
4.docker 安装ik
将我们配置好的本地的ik放入 docker容器里面的plugins文件夹
docker cp ik elasticsearch:/usr/share/elasticearch/plugins
再重启docker
5.docker安装head插件
在 docker 容器里 conf文件夹下 修改elasticsearch.yml 如下
docker pull elasticsearch-head
docker run -di --name elasticsearch-head -p 9100:9100 elasticsearch
从重启docker 访问加上9100就行了