簡體   English   中英

docker-elk - 它如何持久化彈性搜索索引?

[英]docker-elk - how is it persisting elasticsearch index?

我剛剛開始掌握 Docker 和 docker-compose,試圖為 Elasticsearch 創建一個開發環境,我將在稍后部署它。

我一直在使用docker-elk作為參考,我已經成功地創建了一個有效的 Elasticsearch 容器,為其播種,並在我的項目中使用它。

據我了解,Docker 容器不會持久保存數據,除非您使用 Volumes API 並在容器外部創建一個容器然后訪問的卷(在此處閱讀)。

然而 docker-elk 只使用 Volumes 來共享一個配置 yml 文件,但不知何故,當我再次關閉和打開容器時,我的彈性指數仍然存在。

來自 docker-elk 自述文件:

存儲在 Elasticsearch 中的數據將在容器重啟后持久化,但在容器移除后不會持久化。

有人可以解釋以下配置的哪一部分允許docker容器保留索引嗎?

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

構建/彈性搜索/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

您可能知道,容器就是沙箱。 它有一個文件系統,其結構與典型的 linux 操作系統非常相似。 容器只能看到在這個文件系統中的那些文件和文件夾。

在容器內運行的進程將其數據和配置寫入此文件系統中的文件。 此進程不知道它是在容器中還是在 VM 上運行。 因此,數據保存在此文件系統中的文件和文件夾中。

現在,當您使用docker rm ...刪除容器時docker rm ...這些文件將隨容器一起刪除,因此您會丟失數據,除非您使用在主機上備份此數據的卷。

另一方面,停止和啟動容器不會刪除容器文件,因此當您重新啟動容器時數據仍然存在。

為了補充接受的答案,對於正在尋找如何保留數據的任何人。 添加問題中提到的volume

version: '3'

services:
  
  elasticsearch: # Elasticsearch Instance
    container_name: es-search
    image: docker.elastic.co/elasticsearch/elasticsearch:6.1.1
    volumes: # Persist ES data in seperate "esdata" volume
      - esdata:/usr/share/elasticsearch/data
    environment:
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    ports: # Expose Elasticsearch ports
      - "9300:9300"
      - "9200:9200"

volumes: # Define seperate volume for Elasticsearch data
  esdata: ./my/esdata # path of your persisted data here

我在這里找到了彈性泊塢窗的指南: https : //blog.patricktriest.com/text-search-docker-elasticsearch/

可以使用以下命令觀察UUID 中的索引及其映射。

curl 'localhost:9200/_cat/indices?v'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM