修改Elasticsearch端口后Kibana无法连接问题求助
解决Kibana无法连接修改端口后的Elasticsearch问题
我一眼就看出问题所在了——你搞混了Docker容器端口映射和容器间通信的端口逻辑!
错误原因
当你在Docker Compose里配置ports: - 34343:9200时,34343是主机对外暴露的端口,而Elasticsearch容器内部实际监听的还是默认的9200端口。Kibana和Elasticsearch同属一个Docker网络,直接通过服务名/容器名通信时,必须使用容器内部的端口,而不是主机映射的端口。
你之前配置的ELASTICSEARCH_HOSTS=http://elasticsearch:34343,相当于让Kibana去请求Elasticsearch容器的34343端口,但这个端口在容器内部根本没开放,自然会出现ECONNREFUSED错误。
正确配置方案
把Kibana的ELASTICSEARCH_HOSTS改成指向Elasticsearch容器内部的9200端口即可,不管用服务名还是容器名都可以:
修改后的Docker Compose
version: '3.7' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.16.3 container_name: my_elasticsearch environment: - "ES_JAVA_OPTS=-Xms1g -Xmx1g" - discovery.type=single-node ports: - 34343:9200 # 主机端口映射不变,不影响容器间通信 kibana: image: docker.elastic.co/kibana/kibana:7.16.3 environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 # 用服务名+内部端口 # 或者用容器名:ELASTICSEARCH_HOSTS=http://my_elasticsearch:9200 ports: - 5666:5601
验证方法
- 重启服务:
docker-compose down && docker-compose up -d - 查看Kibana日志:
docker-compose logs kibana,如果看到类似Status changed from yellow to green - Ready的日志,说明连接成功 - 访问主机的
http://localhost:5666,应该能正常打开Kibana界面
内容的提问来源于stack exchange,提问作者Abe




