Mac M1环境下Docker部署Kibana无法连接ElasticSearch求助
解决Kibana无法连接Docker中ElasticSearch的问题
核心问题分析
你的Kibana容器配置里ELASTICSEARCH_URL设为http://localhost:9200,但在Docker容器内部,localhost指向的是Kibana容器自身,而非ElasticSearch容器。另外ElasticSearch 8.x默认启用了安全认证机制,这也是连接失败的关键原因。
解决方案
方案1:关闭安全认证(测试环境推荐)
修改docker-compose.yml,给ElasticSearch添加关闭安全的环境变量,同时修正Kibana的ES地址:
version: '3.8' networks: my-network: driver: bridge services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.3.3-amd64 environment: - discovery.type=single-node - node.name=elasticsearch1 - cluster.name=docker-cluster - cluster.initial_master_nodes=elasticsearch1 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms128M -Xmx128M" # 关闭ES 8.x的安全认证 - xpack.security.enabled=false - xpack.security.enrollment.enabled=false ports: - 9200:9200 networks: - my-network kibana: image: docker.elastic.co/kibana/kibana:8.3.3-amd64 environment: SERVER_NAME: localhost # 用Docker服务名代替localhost ELASTICSEARCH_URL: http://elasticsearch:9200/ ports: - 5601:5601 depends_on: - elasticsearch networks: - my-network
方案2:保留安全认证(生产环境推荐)
如果需要保留ES的安全机制,需要获取ES自动生成的账号密码,并配置到Kibana中:
- 启动ES容器后,执行命令获取
elastic用户的初始密码:
docker exec -it folha3_elasticsearch_1 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -b
命令会直接输出密码字符串,比如abc123XYZ。
- 修改Kibana的环境变量,添加认证信息:
kibana: image: docker.elastic.co/kibana/kibana:8.3.3-amd64 environment: SERVER_NAME: localhost ELASTICSEARCH_URL: http://elasticsearch:9200/ # 添加ES认证信息 ELASTICSEARCH_USERNAME: elastic ELASTICSEARCH_PASSWORD: 你的elastic用户密码 ports: - 5601:5601 depends_on: - elasticsearch networks: - my-network
验证步骤
- 停止并删除现有容器:
docker-compose down
- 重新启动容器:
docker-compose up -d
- 查看Kibana日志,确认连接状态:
docker logs folha3_kibana_1
如果日志中出现Status changed from yellow to green - Ready,说明连接成功。
内容的提问来源于stack exchange,提问作者Lucas Santiago
相关产品推荐
相关产品推荐

