docker - Kibana 数据在 docker-compose 关闭时丢失
问题描述
我正在使用 elk docker 映像并使用下面的 docker-compose 文件来启动 ELK 容器并将数据存储在卷中。
version: '3.5'
services:
elasticsearch:
build:
context: elasticsearch/
volumes:
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
logstash:
build:
context: logstash/
volumes:
- ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
- ./logstash/pipeline:/usr/share/logstash/pipeline:ro
ports:
- "5000:5000"
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
depends_on:
- elasticsearch
kibana:
build:
context: kibana/
volumes:
- ./kibana/config/:/usr/share/kibana/config:ro
ports:
- "5601:5601"
networks:
- elk
depends_on:
- elasticsearch
networks:
elk:
driver: bridge
Kibana 版本 6.6.0
我使用以下命令启动:
docker-compose up -d
观察到所有三个容器都已启动并运行,我可以将我的数据发布到 kibana 并且可以可视化。
我刚刚遇到了关闭这个撰写文件并启动的情况。但是当我做那个活动时,所有早期的 kibana 数据都已经丢失了。
docker-compose down
有什么方法可以将这些记录永久存储在机器中(在 linux 框中的某个位置)作为备份其他任何数据库?
请帮助我。
解决方案
您必须将 elasticsearch 数据目录 ( /usr/share/elasticsearch/data
) 移动到永久 docker 卷中,如下所示:
elasticsearch:
build:
context: elasticsearch/
volumes:
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
- ./es_data:/usr/share/elasticsearch/data
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
推荐阅读
- c# - 通过 LINQ to SQL 绑定数据时如何在 C# 中向 DataGridView 添加行
- java - java.io.IOException:在 Andoid 上使用相机时权限被拒绝?
- flutter - LocalStorage 流未完成?
- cmake - boost-python 的 CMake target_link_libraries 找不到 .lib 但变量 ${PYTHON_LIBRARIES} 指向它
- python - 关于在不同conda环境下安装tensorflow包
- amazon-web-services - Redshift 加载数据问题:Redshift 表不支持指定的类型或函数(每条 INFO 消息一个)
- kubernetes - Kubernetes 通过 http 请求访问其他命名空间中的服务
- python - Xcode 11.5 的 python 3.7.7 中没有可执行文件
- java - 将实体映射到正确的子类
- javascript - 使用当前 url 形成操作 url