Docker 卷在 Docker Compose 中的容器重新启动之间不保留数据

问题描述 投票:0回答:1

使用 Docker Compose 时,我遇到了 Docker 卷在容器重新启动之间不保留数据的问题。这是我的设置和我面临的问题的细分:

Docker Compose 配置:

version: '3.7'

services:
  solrcloud1:
    image: solr:8.11.2
    container_name: solrcloud1
    ports:
      - "8981:8983"
    environment:
      - ZK_HOST=zk:2181
    networks:
      - solr
    depends_on:
      - zk
    volumes:
      - solrcloud1_data:/var/solr

  solrcloud2:
    image: solr:8.11.2
    container_name: solrcloud2
    ports:
      - "8982:8983"
    environment:
      - ZK_HOST=zk:2181
    networks:
      - solr
    depends_on:
      - zk
    volumes:
      - solrcloud2_data:/var/solr

  solrcloud3:
    image: solr:8.11.2
    container_name: solrcloud3
    ports:
      - "8983:8983"
    environment:
      - ZK_HOST=zk:2181
    networks:
      - solr
    depends_on:
      - zk
    volumes:
      - solrcloud3_data:/var/solr

  zk:
    image: zookeeper:3.6.2
    container_name: zk
    restart: always
    hostname: zk
    ports:
      - 2181:2181
      - 7001:7000
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zk:2888:3888;2181
      ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok
      ZOO_CFG_EXTRA: "metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true"
    networks:
      - solr
    volumes:
      - zk_data:/data

networks:
  solr:

volumes:
  solrcloud1_data:
    external: false
  solrcloud2_data:
    external: false
  solrcloud3_data:
    external: false
  zk_data:
    external: false

我确认正在创建卷:

$ docker volume ls
DRIVER    VOLUME NAME
local     1zk_3sc_solrcloud1_data
local     1zk_3sc_solrcloud2_data
local     1zk_3sc_solrcloud3_data
local     1zk_3sc_zk_data
local     8a1dadc9debf247e3b5b11d64367438806ac839e9bf99566916a473110782f80
local     15e8ec0fb6052d0458d9f1bba9812326a0eccfe844d75cb7fbf0019ab1cc03f1
local     a242b48bedc509504825dcf9ec5d300692282a80cb87bbb0f694c67c2ad969f2
local     b8183473dd64a163dc91c6eb9d878675344b6655fd766837fe92e1c1f1381060

问题:

  1. 我已经为每个 Solr 容器定义了卷,以使用 solrcloud1_data、solrcloud2_data 和 solrcloud3_data 命名卷来保存数据。
  2. 创建集合和索引数据后,我使用 docker-compose down 停止并删除所有容器。
  3. 当我使用 docker-compose up 重新启动容器时,集合、索引数据和核心不会保留,并且卷似乎未正确安装。
  4. 我已经使用 docker volume ls 验证了命名卷是否存在,并且它们出现在列表中。

可能导致此问题的原因是什么?如何确保我的 Docker 卷在容器重新启动之间正确保留数据?

任何见解或建议将不胜感激。预先感谢您!

docker docker-compose solr docker-volume solrcloud
1个回答
0
投票

通过在 docker-compose 文件中使用

external: false
,它告诉 docker-compose 管理这些卷,以便当使用这些卷的容器停止(docker-compose down)时,该卷将被删除。如果您希望卷和数据持久存在,则需要使用
external: true
并使用 docker volume create 创建卷。

通过 docker compose 重新使用现有卷

© www.soinside.com 2019 - 2024. All rights reserved.