- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我正在使用 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/
我是一名优秀的程序员,十分优秀!