拉取镜像
这里一定要确保elasticsearch和kibana的版本一直,否则后面可能会出现Kibana server is not ready yet
的问题
# 存储和检索数据
docker pull elasticsearch:7.4.2
# 可视化检索数据
docker pull kibana:7.4.2
创建实例
mkdir -p /usr/local/localVolumes/elasticsearch/config
mkdir -p /usr/local/localVolumes/elasticsearch/data
echo "http.host:0.0.0.0">>/usr/local/localVolumes/elasticsearch/config/elasticsearch.yml
# 创建实例
docker run --name elasticsearch -p 9201:9200 -p 9301:9300 \
-e "discovery:type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx256m" \
-v /usr/local/localVolumes/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/localVolumes/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/localVolumes/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
需要给与这个文件夹授予权限,负责可能无法启动elasticsearch
sudo chmod -R 777 /usr/local/localVolumes/*
安装可视化界面Kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://127.0.0.1:9201 -p 5602:5601 \
-d kibana:7.4.2
http://localhost:9201 要改为自己的对应IP地址
注意,如果直接配置成localhost:9201
或者127.0.0.1:9201
,kibana可能依然无法访问,因为他应该配置容器的IP,而不是本机的IP
解决办法:
-
查看ElasticSearch 的容器内部 ip:
docker inspect elasticsearch
找到Networks下的IPAddress:
"Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "c6a4ecc8620aa0b16560232c95d66a00d838ce697c518d0e284e2798736e26c5", "EndpointID": "91f1d9346871113ffa8e328bf7b7aef4e9ebc70fdfab4d3c99099dc5abc5b3ba", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:03", "DriverOpts": null } }
记住该IP,我的是
172.17.0.3
-
进入Kibana容器
docker exec -it kibana bash cd config vi kibana.yml
修改对应的ip,将
"http://elasticsearch:9200"
中的elasticsearch
替换成第一步的ip就好了。 -
修改完成后退出容器,再重启容器就好了
docker stop kibana docker restart kibana
再次访问localhost:5602, 正常了
那么修改后的启动命令应该是:
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://172.17.0.3:9200 -p 5602:5601 \ -d kibana:7.4.2
如果按照以上的仍然无法访问,可以继续往下看
ElsaticSearch缓存的问题
进入Kibana容器中,
docker exec -it kibana /bin/bash
bash-4.2$ ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=1.69 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.102 ms
64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.098 ms
64 bytes from 172.17.0.3: icmp_seq=4 ttl=64 time=0.127 ms
^C
--- 172.17.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3067ms
rtt min/avg/max/mdev = 0.098/0.506/1.698/0.688 ms
bash-4.2$ curl http://172.17.0.3:9200
{
"name" : "be6174278743",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "7kjQgB_ZRx-HLcPZ3WtiBg",
"version" : {
"number" : "7.4.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
"build_date" : "2019-10-28T20:40:44.881551Z",
"build_snapshot" : false,
"lucene_version" : "8.2.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
从上面的日志可以看出,容器间的访问也是正常的,头大,都没问题,后来无意中看到了博客提到缓存,试了试果然可行,操作步骤如下:
1. 停止kibana
docker stop kibana
2. 删除kibana索引
curl -XDELETE http://localhost:9201/.kibana*
3. 启动kibana
docker start kibana
好了,稍等片刻,大概一分钟后吧,试试,果然可以正常访问了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BMEZtpPL-1609303353869)(/Users/sangkuofeng/Documents/MarkDown文档库/staticDocs/# Docker安装ElasticSearch.assets/image-20201227140936982.png)]