我使用docker安装es的版本是7.10.1,索引安装es对应的版本7.10.1
一、拉取镜像
docker pull kibana:7.10.1
二、启动容器
docker run --name kibana -e ELASTICSEARCH_URL=http://10.64.3.159:9200 -p 5601:5601 -d kibana:7.10.1
三、访问kibana
http://10.64.3.159:5601
四、出现问题
1.页面出现 kibana servcer xxx不可访问
首先我们查看 ElasticSearch 的容器内部 ip:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
然后进入 Kibana 容器内部,修改 kibana.yml 中的ip
$ docker exec -it kibana容器id /bin/bash
$ cd config
$ vi kibana.yml
#
# ** THIS IS AN AUTO-GENERATED FILE **
#
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
只需要将上面的 "http://elasticsearch:9200"
中的 elasticsearch
替换成上一步的es容器内部ip就可以了。
修改完成之后退出容器,重新启动即可 docker restart kibana容器id
问题3:系统防火墙造成的问题
docker logs kibana
打印日志,报错:
{"type":"log","@timestamp":"2020-06-04T08:25:57Z","tags":["warning","elasticsearch","admin"],"pid":6,"message":"Unable to revive connection: http://172.17.0.2:9200/"}
{"type":"log","@timestamp":"2020-06-04T08:25:57Z","tags":["warning","elasticsearch","admin"],"pid":6,"message":"No living connections"}
容器 ip
是没问题的,es 服务也确实起了,为什么呢??这个问题花了我大半天的时间,找遍了网上的教程都, 翻了官网上kibana手册,都没有相关的记录
只能自己摸索
进入kibana容器中
docker exec -it kibana /bin/bash
bash-4.2$ ping 172.17.0.2 #没有问题,能ping通
...
bash-4.2$ curl http://120.79.43.44:9200
curl: (7) Failed connect to 120.79.43.44:9200; No route to host
问题就出在这里!容器之间无法进行通信,猜测是防火墙的问题,再单独搜索这个问题,找到了解决的方案
依次执行以下命令
nmcli connection modify docker0 connection.zone trusted
systemctl stop NetworkManager.service
firewall-cmd --permanent --zone=trusted --change-interface=docker0
systemctl start NetworkManager.service
nmcli connection modify docker0 connection.zone trusted
systemctl restart docker.service
即把 docker0
加入防火墙白名单
重新启动容器,访问地址 http://localhost:5601 ,显示正在加载 kibana 图像,总算没有了 Kibana server is not ready yet
。
版权声明:本文为weixin_42741805原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。