gpt4 book ai didi

docker - 如何通过卷将 Zookeeper 数据保存在 Docker 设置中?

转载 作者:行者123 更新时间:2023-12-02 21:16:13 26 4
gpt4 key购买 nike

因此,我正在使用 official docker image 在 docker 上的本地环境中设置 Zookeeper 。现在,我想要的 Zookeeper 设置是能够通过将 Zookeeper 数据目录安装为容器内的卷来持久保存节点及其值。

这很简单,但让我困惑的是容器内 Zookeeper 的数据目录位于 /data ,而 datalog 目录位于 /datalog 。理想情况下,我希望 Zookeeper 除了数据日志目录之外,还能将节点和值保留在数据文件夹内。但是,我发现虽然 datalog 目录在 log.* 文件中包含数据,但 data 目录没有任何与我创建的测试节点相关的数据。

bash-4.4# pwd
/datalog/version-2
bash-4.4# ls
log.1 log.3 log.5 log.8


bash-4.4# pwd
/data/version-2
bash-4.4# ls
bash-4.4#

我的目标是通过我的 docker-compose.yml 中的 Zookeeper 服务实现的 -

volumes:
- zkdata:/datalog

但这似乎违反直觉,我正在安装事务日志目录而不是实际的数据目录。 Zookeeper 如何以及在何处实际保存节点数据以及如何将其正确安装为 Docker 容器中的卷?

我实际上可以将 ZOO_DATA_LOG_DIR 环境变量设置为 /data 并将其挂载为 docker 卷,但我的问题实际上是关于为什么 Zookeeper 数据为空,而数据记录目录不是。

最佳答案

您可能应该在 Zookeeper 配置中看到 dataDir 路径并将该路径挂载到卷中。在我的例子中,zookeeper 配置位于/config/zoo.cfg

dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=localhost:2888:3888;2181

dataDir是zookeeper存储内存数据库快照的地方,在发生故障时将被引用。

由于 dataDir 是/data,所以我在卷中安装了/data 目录,因此条目为:

volumes:
- zkdata:/data

关于docker - 如何通过卷将 Zookeeper 数据保存在 Docker 设置中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52378898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com