You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行docker-compose down后Kibana丢失索引及索引模式问题

问题成因
  • Elasticsearch 7.17的索引数据、集群元数据默认存储在容器内部/usr/share/elasticsearch/data路径,Kibana 7.17保存的索引模式、可视化看板、空间配置等数据默认存储在容器内部/usr/share/kibana/data路径。Docker容器的文件系统是临时分层存储,所有写入容器内部非持久化映射路径的内容,都会在容器被删除时完全清除。
  • docker-compose down命令的默认逻辑是停止并删除对应compose项目创建的所有服务容器、网络,仅保留显式声明的持久化卷。如果compose配置中没有给上述两个数据路径配置持久化映射,容器删除后所有存储在容器内的数据自然会全部丢失。
  • 若配置持久化时使用了未指定名称的匿名卷,执行docker-compose down -v时匿名卷会被同步删除,同样会造成数据丢失。
解决方案

核心是给Elasticsearch、Kibana的内部数据路径配置可靠的持久化存储,推荐使用宿主机目录绑定的方式,方便备份和迁移,具体操作如下:

  1. 编写正确的docker-compose.yml配置,添加数据卷映射规则,参考配置如下:
version: '3.7'
services:
  elasticsearch:
    image: elasticsearch:7.17
    container_name: es-7.17
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - ./es/data:/usr/share/elasticsearch/data
      - ./es/plugins:/usr/share/elasticsearch/plugins
    restart: unless-stopped
    networks:
      - elk

  kibana:
    image: kibana:7.17
    container_name: kibana-7.17
    depends_on:
      - elasticsearch
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    volumes:
      - ./kibana/data:/usr/share/kibana/data
    restart: unless-stopped
    networks:
      - elk

  filebeat:
    image: elastic/filebeat:7.17
    container_name: filebeat-7.17
    user: root
    depends_on:
      - elasticsearch
    volumes:
      - ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - /var/log:/host/var/log:ro
    restart: unless-stopped
    networks:
      - elk

networks:
  elk:
    driver: bridge
  1. 在docker-compose.yml同级目录创建所需的存储目录,提前配置权限避免ES启动鉴权失败:
mkdir -p ./es/data ./es/plugins ./kibana/data ./filebeat
# 测试环境可直接给777权限,生产环境建议授权给1000:1000的ES运行用户
chmod 777 ./es/data ./kibana/data
# 生产环境执行:chown -R 1000:1000 ./es/data ./kibana/data
  1. 提前编写filebeat配置文件放到./filebeat/filebeat.yml路径,配置好日志采集规则和Elasticsearch输出地址后,执行docker-compose up -d启动服务。

配置完成后,所有索引数据、Kibana配置都会持久化保存在宿主机的对应目录下,后续不管执行docker-compose down还是重启宿主机,重新启动容器后数据都不会丢失。

注意:如果需要重置环境清空所有数据,手动删除当前目录下的es、kibana文件夹即可,日常操作不要随意加-v参数执行down命令,避免误删持久化数据。

内容的提问来源于stack exchange,提问作者safae azouzou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 20:21:27