请教个关于 docker 数据持久化的问题

查看 52|回复 5
作者:yezheyu   
遇到一个问题,翻了下 docker 的文档,没看找到解决方案,想请教下大家
我使用 docker service 运行了一个 app(分配在 node1 上),并在启动时挂载了配置文件
之后在 app 在运行一段时间后,修改了配置文件,配置文件会自动持久化到 node1 上
此时 node1 机器宕机,容器因为使用 docker service 部署的,会自动从 node1 迁移到 node2
而 node2 上新生成容器默认会挂载的最初配置文件,那配置文件中变化的数据不就会丢失吗?
这种问题如何解决呢?
是所使用把配置数据保存在数据库中,这样变化的数据就不会丢失。
但如果需要持久化的是二进制数据呢?感觉又不太合适
还是挂载时不要挂载本地文件夹,而是使用 nfs 这样的网络存储吗?
hefish   
最后一句是个办法。
另外,既然都用上 docker ,用上迁移的,开发的时候就得有点那个云服务概念, 对于存储这样的服务,单机肯定不行了。可以考虑 minio 啊,或者各大云服务商的存储服务啊。。。。
laminux29   
宕机时自动迁移节点并且保证数据不丢失,无论是 docker 还是虚拟化,都没办法帮你 100% 做到,这种要求,是需要从架构上入手的,基于业务层来做 HA ,才能实现单物理节点宕机后,100% 不丢数据。
如果你不需要 100% 保证不丢失数据,并且你不愿意自己改造 docker ,那么你直接上虚拟化就行了,VMware ESXi 集群就有 HA 功能。
如果你不需要 100% 保证不丢失数据,并且你愿意自己改造 docker ,可以在 docker 内部使用实时同步,或者挂载网络存储。
yezheyu
OP
  
@hefish @laminux29 首先谢谢两位的回答
局域网,上不了云存储, 除了一楼老哥介绍的 minio ,还有什么推荐的轻量化的网络存储服务吗
sujin190   
nfs 呗,直接挂载磁盘
morningtzh   
多节点的话 k8s 得了解一下,ingress / 存储 都给你解决了
存储可以使用:nfs / scsi / ceph 等,直接使用 pvc 管理很方便;
k8s 缩减版 k3s 挺适合家用的,只有一个二进制文件,我在单节点 NAS 上也用 k3s ,自带 traefik ingress 很方便。如果 runtime 喜欢 docker ,也可以用 docker (默认是 containerd )
但你这有个问题,想要单独搞存储又涉及到了存储放什么服务器上的问题,你都是高可用的,那存储也得是高可用的,单节点你肯定不乐意。所以如果你还用 hostpath ,可以考虑起个 rsync 进行存储的双机热备,这样服务起哪里都无所谓了
之前写了 blog 记录了一下
https://blog.morningtzh.com/post/数字家庭/nas 容器化/
您需要登录后才可以回帖 登录 | 立即注册

返回顶部