1.下载
注意elasticsearch和kibana的版本最好一致 不然容易出现错误
docker pull elasticsearch:7.4.2 #存储和检索数据
docker pull kibana:7.4.2 #可视化检索工具
docker pull mobz/elasticsearch-head:5-alpine #head插件拉取此镜像需要登录docker login操作,不然会报错 unauthorized: authentication required
2.配置
mkdir -p /home/elasticsearch/config
mkdir -p /home/elasticsearch/data
echo "http.host: 0.0.0.0" >/home/elasticsearch/config/elasticsearch.yml
chmod -R 777 /home/elasticsearch/
3.运行
9200:http协议 外部通讯 外部访问
9300:tcp协议 内部通讯 用于集群
docker run --name elasticsearch -p 9200:9200 -p 9300:9300
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx256m" \
-v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/elasticsearch/data:/usr/share/elasticsearch/data \
-v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
参数说明
–name elasticsearch:将容器命名为 elasticsearch
-p 9200:9200:将容器的9200端口映射到宿主机9200端口
-p 9300:9300:将容器的9300端口映射到宿主机9300端口,目的是集群互相通信
-e “discovery.type=single-node”:单例模式
-e ES_JAVA_OPTS="-Xms64m -Xmx128m":配置内存大小
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:将配置文件挂载到宿主机
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data:将数据文件夹挂载到宿主机
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins:将插件目录挂载到宿主机(需重启)
-d elasticsearch:7.7.0:后台运行容器,并返回容器ID
开机自启动
docker update elasticsearch --restart=always
4.启动kibana
注意:ELASTICSEARCH_HOSTS=http://localhost:9200中localhost需要改成es容器内部ip,不然会报Kibana server is not ready yet
查看容器内部IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名称或id
启动kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://localhost:9200 -p 5601:5601 -d kibana:7.4.2
开机自启动
docker update kibana --restart=always
5.启动head插件
docker run -d \
--name=elasticsearch-head \
--restart=always \
-p 9100:9100 \
docker.io/mobz/elasticsearch-head:5-alpine
5.开启ES跨域访问
进入es容器,找到配置文件并在ES的配置文件中追加如下两行配置
[root@localhost ~]# docker exec -it 4bac193fdf3a /bin/bash
[root@4bac193fdf3a elasticsearch]# ls
LICENSE.txt NOTICE.txt README.textile bin config data jdk lib logs modules plugins
[root@4bac193fdf3a elasticsearch]# vi ./config/elasticsearch.yml
#如下增加跨域配置:wq保存退出
http.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
6.重启ES容器
docker restart 4bac193fdf3a#容器id
7.配置head插件
docker exec -it 5fd78f2a5dfa /bin/sh#进入head容器中
vi ./_site/app.js #编辑head的ES配置,将其中的localhost修改为自己的ip地址
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
↓
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://IP:9200";
8.head管理elasticsearch集群设置索引时报错406not Acceptable
进入head安装目录编辑vendor.js 共有两处
docker exec -it 5fd78f2a5dfa /bin/sh#进入head容器中
/usr/src/app # vi ./_site/vendor.js
1. 6886行 contentType: "application/x-www-form-urlencoded" 改成 contentType:"application/json;charset=UTF-8"
2. 7574行 var inspectData = s.contentType == "application/x-www-form-urlencoded" &&
改成 var inspectData = s.contentType == "application/json;charset=UTF-8" &&
9.测试
访问ES服务 http://ip:9200/,kibana可视化服务 http://ip:5601/ ,head插件 http://ip:9100/
在这里插入图片描述](https://img-blog.csdnimg.cn/4393932713d44c749a5f9f1f82e0eaf1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Yaw5ZKW5ZWhMDA4,size_17,color_FFFFFF,t_70,g_se,x_16)