docker-elk - 如何坚持弹性搜索索引?

时间:2017-12-06 11:31:26

标签: docker elasticsearch docker-compose elastic-stack

我刚刚掌握了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

3 个答案:

答案 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'