现象:
原因: 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.12container_name: elasticsearchnetworks:- elastic-networkports:- "9200:9200"- "9300:9300"environment:- discovery.type=single-nodekibana:image: docker.elastic.co/kibana/kibana:6.8.12container_name: kibananetworks:- elastic-networkports:- "5601:5601"environment:- ELASTICSEARCH_URL=http://elasticsearch:9200networks:elastic-network:driver: bridge
问题解决: