docker-elk – 如何保持elasticsearch索引?

我只是要抓住Docker和docker-compose,试图为Elasticsearch创build一个开发环境,我将在稍后部署。

我一直在使用docker-elk作为参考,并且设法创build了一个工作的Elasticsearch容器,将其种子,并在我的项目中使用它。

据我了解,除非您使用Volumes API并在容器访问( 在此处阅读)之外创build一个容器,否则Docker容器不会持久化数据。

然而docker-elk只使用卷来共享一个configurationyml文件,但不知何故,当我重新启动容器时,我的弹性索引仍然存在。

从docker麋鹿自述:

存储在Elasticsearch中的数据将在容器重启后保留,但不会在容器移除后保留。

有人可以请解释下面的configuration是什么部分允许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 

build立/ elasticsearch / Dockerfile

 FROM docker.elastic.co/elasticsearch/elasticsearch-oss:6.0.0 

build立/ elasticsearch / config.yml

 cluster.name: "docker-cluster" network.host: 0.0.0.0 discovery.zen.minimum_master_nodes: 1 discovery.type: single-node 

你可能知道,一个容器是一个沙箱。 它有一个与典型的linux操作系统结构非常相似的文件系统。 容器只能看到这个文件系统中的文件和文件夹。

在容器中运行的进程将其数据和configuration写入此文件系统中的文件。 这个过程并不知道它在一个容器或者一个虚拟机上运行。 因此数据被保存在这个文件系统的文件和文件夹中。

现在,当您使用docker rm ...删除容器时,这些文件将随容器一起被删除,因此您将丢失数据,除非您使用在主机上备份此数据的卷。

另一方面, 停止并启动容器不会删除容器文件,因此在重新启动容器时数据仍然存在。