请教个关于 docker 数据持久化的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yezheyu
V2EX    问与答

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

  • nbsp;
  •   yezheyu 2024-05-13 18:52:44 +08:00 1704 次点击
    这是一个创建于 520 天前的主题,其中的信息可能已经有所发展或是发生改变。

    遇到一个问题,翻了下 docker 的文档,没看找到解决方案,想请教下大家

    我使用 docker service 运行了一个 app(分配在 node1 上),并在启动时挂载了配置文件

    之后在 app 在运行一段时间后,修改了配置文件,配置文件会自动持久化到 node1 上

    此时 node1 机器宕机,容器因为使用 docker service 部署的,会自动从 node1 迁移到 node2

    而 node2 上新生成容器默认会挂载的最初配置文件,那配置文件中变化的数据不就会丢失吗?

    这种问题如何解决呢?

    是所使用把配置数据保存在数据库中,这样变化的数据就不会丢失。 但如果需要持久化的是二进制数据呢?感觉又不太合适

    还是挂载时不要挂载本地文件夹,而是使用 nfs 这样的网络存储吗?

    9 条回复    2024-05-14 15:29:04 +08:00
    hefish
        1
    hefish  
       2024-05-13 18:55:58 +08:00
    最后一句是个办法。
    另外,既然都用上 docker ,用上迁移的,开发的时候就得有点那个云服务概念, 对于存储这样的服务,单机肯定不行了。可以考虑 minio 啊,或者各大云服务商的存储服务啊。。。。
    laminux29
        2
    laminux29  
       2024-05-13 19:14:10 +08:00
    宕机时自动迁移节点并且保证数据不丢失,无论是 docker 还是虚拟化,都没办法帮你 100% 做到,这种要求,是需要从架构上入手的,基于业务层来做 HA ,才能实现单物理节点宕机后,100% 不丢数据。

    如果你不需要 100% 保证不丢失数据,并且你不愿意自己改造 docker ,那么你直接上虚拟化就行了,VMware ESXi 集群就有 HA 功能。

    如果你不需要 100% 保证不丢失数据,并且你愿意自己改造 docker ,可以在 docker 内部使用实时同步,或者挂载网络存储。
    yezheyu
        3
    yezheyu  
    OP
       2024-05-13 19:28:37 +08:00
    @hefish @laminux29 首先谢谢两位的回答

    局域网,上不了云存储, 除了一楼老哥介绍的 minio ,还有什么推荐的轻量化的网络存储服务吗
    sujin190
        4
    sujin190  
       2024-05-13 21:49:47 +08:00 via Android
    nfs 呗,直接挂载磁盘
    morningtzh
        5
    morningtzh  
       2024-05-13 22:19:59 +08:00   4
    多节点的话 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 容器化/
    Int100
        6
    Int100  
       2024-05-14 06:01:58 +08:00
    @morningtzh #5

    文章一看,惊为天人,让我来好好学习一波。感谢分享。
    1358208301
        7
    1358208301  
       2024-05-14 08:46:19 +08:00
    看了博客,内容不错
    @morningtzh
    yezheyu
        8
    yezheyu  
    OP
       2024-05-14 13:46:32 +08:00
    @morningtzh 首先谢谢老哥

    项目中只是一个很小的集群,只有一两台机器。
    最开始技术选型时,对 k8s 不熟悉,感觉其比较重。
    就用了比较熟悉的 docker(k3s 没想到)。

    现在换 k3s 已经不太可能了,否则好多东西要推倒重来


    所以目前来看还是用 minio 这种自带高可用的存储服务更加方便点?
    要不然用 NFS 还需要起两个副本,且进行数据同步。
    laminux29
        9
    laminux29  
       2024-05-14 15:29:04 +08:00
    @yezheyu 轻量化的网络存储服务,可以选择 ZFS ,地球上单机最强 FS 。

    然后通过 SSHFS 进行挂载,比 SMB 、NFS 这种不稳定的玩意安全得多。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5378 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 06:02 PVG 14:02 LAX 23:02 JFK 02:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86