【发布时间】:2019-12-05 18:00:11
【问题描述】:
所以,我正在使用official docker image 在 docker 上的本地环境中设置 Zookeeper。现在,我希望这个 Zookeeper 设置能够通过将 Zookeeper 数据目录作为卷挂载到我的容器中来持久保存节点及其值。
这很简单,但让我感到困惑的是,Zookeeper 在容器内的数据目录位于/data,而数据日志目录位于/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 数据为空而数据日志目录不是。
【问题讨论】: