安装ES
-
在Docker Hub上搜索MySQL镜像
-
在Tags中查找对应版本,复制命令并执行
docker pull elasticsearch:6.8.0
-
给ES和Kibana单独创建一个网桥
因为ES和Kibana建议以一个独立的服务存在。
docker network create 网桥名称
-
启动基本服务实例
ES有两个端口:
- 9200:Web端口,与RESTful客户端通信。
- 9300:为TCP端口,与Java做通信。
docker run -d --name 容器名 --network 网桥名 -p 宿主机端口1:9200 -p 宿主机端口2:9300 -e "discovery.type=single-node" elasticsearch:6.8.0
上面命令中 -e 配置表示ES以单节点模式启动,虽然名为单节点,但是还是以集群模式启动。
所以我们默认集群启动,也没有问题
docker run -d --name 容器名 --network 网桥名 -p 宿主机端口1:9200 -p 宿主机端口2:9300 elasticsearch:6.8.0
在第一次启动ES时,可能会报CentOS虚拟内存不够,需要做如下配置
-
宿主机中修改配置
vim /etc/sysctl.conf
-
修改如下配置
vm.max_map_count=262144
CentOS 7中默认大小为65530。
-
启用配置
sysctl -p
-
使用数据卷将ES的数据和配置持久化到宿主机
进入容器查看可知,ES在Docker中的所有数据都存储在容器中的
/usr/share/elasticsearch/data
中;ES在Docker中的所有配置都存储在容器中的/usr/share/elasticsearch/config
。docker run -d --name 容器名 --network 网桥名 -p 宿主机端口1:9200 -p 宿主机端口2:9300 -v 数据卷名称1:/usr/share/elasticsearch/data -v 数据卷名称2:/usr/share/elasticsearch/config elasticsearch:6.8.0
-
使用数据卷将ES的插件持久化到宿主机
进入容器查看可知,ES在Docker中的所有插件都存储在容器中的
/usr/share/elasticsearch/plugins
中。docker run -d --name 容器名 --net 网桥名 -p 宿主机端口1:9200 -p 宿主机端口2:9300 -v 数据卷名称1:/usr/share/elasticsearch/data -v 数据卷名称2:/usr/share/elasticsearch/config -v 数据卷名称3:/usr/share/elasticsearch/plugins elasticsearch:6.8.0
-
将对应ES版本的IK分词器
elasticsearch-analysis-ik-6.8.0.zip
上传到上面命令中的设置的/var/lib/docker/volumes/数据卷名称3/_data
中。 -
创建一个目录ik,存放解压后的
elasticsearch-analysis-ik-6.8.0.zip
mkdir ik mv elasticsearch-analysis-ik-6.8.0.zip ik/ cd ik/
-
解压
elasticsearch-analysis-ik-6.8.0.zip
unzip elasticsearch-analysis-ik-6.8.0.zip
-
删除
elasticsearch-analysis-ik-6.8.0.zip
rm -rf elasticsearch-analysis-ik-6.8.0.zip
-
重启当前容器,自动载入IK分词器
docker restart 容器名
安装Kibana
-
在Docker Hub上搜索Kibana镜像
-
在Tags中查找对应版本,复制命令并执行
docker pull kibana:6.8.0
Kibana和ES的版本必须保持严格一致。
-
启动基本服务实例
docker run -d --name 容器名 --net 网桥名 -p 宿主机端口:5601 kibana:6.8.0
网桥名和ES的网桥名一致。
-
Kibana连接ES
docker run -d --name 容器名 --net 网桥名 -p 宿主机端口:5601 -e ELASTICSEARCH_URL=http://宿主机IP:宿主机端口1 kibana:6.8.0
宿主机端口1与 "安装ES" 中第5点中相对应。
-
优化
如果每次都写
-e ELASTICSEARCH_URL=http://宿主机IP:宿主机端口1
未免太过于冗余,可以将这些内容写入Kibana配置文件,让Kibana在加载时去配置文件中读取信息,这样就更加方便了。进入容器查看可知,Kibana在Docker中的所有配置都存储在容器中的
/usr/share/kibana/config
中。-
使用数据卷将Kibana的配置持久化到宿主机
docker run -d --name 容器名 --net 网桥名 -p 宿主机端口:5601 -v 数据卷名称:/usr/share/kibana/config kibana:6.8.0
-
去
/var/lib/docker/volumes/数据卷名称/_data
中修改kibana.yml
配置文件。elasticsearch.hosts: [ "http://宿主机IP:宿主机端口1" ]
宿主机端口1与 "安装ES" 中第5点中相对应。
kibana.yml
中默认为elasticsearch.hosts: [ "http://elasticsearch:9200" ]
-
重启Kibana
docker restart 容器名
容器名与上面第1点对应。
-