现象:
原因: docker run生成容器的时候,指定elastic server时指向了localhost
为什么不能是localhost, 因为这个localhost指向的是容器本身的网络,而elastic用的是物理网络,两个网络是隔离的,所以如果kibana指向localhost:9200是没法访问到elastic的
解决办法: 生成docker容器时,将指向elastic server的ip指向宿主机的物理ip.
docker run -dt --name kibana-6.8.12 --restart=always -e ELASTICSEARCH_URL=http://192.168.10.82:9200 -p 5601:5601 kibana:6.8.12
或者使用docker-compose, 通过networks字段将两个容器绑定到同一个网络中
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.12
container_name: elasticsearch
networks:
- elastic-network
ports:
- "9200:9200"
- "9300:9300"
environment:
- discovery.type=single-node
kibana:
image: docker.elastic.co/kibana/kibana:6.8.12
container_name: kibana
networks:
- elastic-network
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
networks:
elastic-network:
driver: bridge
问题解决: