我刚刚掌握了Docker和docker-compose,试图为Elasticsearch创建一个我稍后将部署的开发环境。
我一直在使用docker-elk作为参考,我已经设法创建了一个有效的Elasticsearch容器,播种它,并在我的项目中使用它。
据我了解,Docker容器不会保留数据,除非您使用Volumes API并在容器之外创建容器,然后容器访问该容器(读取here)。
然而,docker-elk只使用Volumes来共享一个配置yml文件,但是当我把容器再次向下移动时,我的弹性索引会持续存在。
来自docker-elk自述文件:
存储在Elasticsearch中的数据 将在容器重启后保留,但不会在容器之后保留 去除。
有人可以解释以下配置的哪一部分允许docker容器持久保存索引吗?
搬运工-compose.yml
version: '2'
services:
elasticsearch:
build:
context: build/elasticsearch/
volumes:
- ./build/elasticsearch/config.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
networks:
elk:
driver: bridge
建立/ elasticsearch / Dockerfile
FROM docker.elastic.co/elasticsearch/elasticsearch-oss:6.0.0
建立/ elasticsearch / config.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
discovery.type: single-node
答案 0 :(得分:1)
补充已接受的答案,适用于正在寻找如何持久保存数据的任何人。添加问题中提到的 co_await getACoro();
。
volume
我在这里找到了一份关于弹性泊坞窗的指南:https://blog.patricktriest.com/text-search-docker-elasticsearch/
答案 1 :(得分:0)
您可能知道,容器是沙箱。它的文件系统结构与典型的Linux操作系统非常相似。容器只能看到这个文件系统中的文件和文件夹。
在容器内运行的进程将数据和配置写入此文件系统中的文件。此过程不知道它在容器或VM上运行。因此,数据保存在此文件系统中的文件和文件夹中。
现在当您使用docker rm ...
删除容器时,这些文件会随容器一起删除,因此除非您使用在主机上备份此数据的卷,否则会丢失数据。
另一方面,停止并启动容器不会删除容器文件,因此当您重新启动容器时数据仍然存在。
答案 2 :(得分:-1)
可以使用以下命令在 UUID 中观察索引及其映射。
curl 'localhost:9200/_cat/indices?v'