V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
yezheyu
V2EX  ›  问与答

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

  •  
  •   yezheyu · May 13, 2024 · 2189 views
    This topic created in 724 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    这种问题如何解决呢?

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

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

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

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

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

    局域网,上不了云存储, 除了一楼老哥介绍的 minio ,还有什么推荐的轻量化的网络存储服务吗
    sujin190
        4
    sujin190  
       May 13, 2024 via Android
    nfs 呗,直接挂载磁盘
    morningtzh
        5
    morningtzh  
       May 13, 2024   ❤️ 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  
       May 14, 2024
    @morningtzh #5

    文章一看,惊为天人,让我来好好学习一波。感谢分享。🙏
    1358208301
        7
    1358208301  
       May 14, 2024
    看了博客,内容不错
    @morningtzh
    yezheyu
        8
    yezheyu  
    OP
       May 14, 2024
    @morningtzh 首先谢谢老哥

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

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


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

    然后通过 SSHFS 进行挂载,比 SMB 、NFS 这种不稳定的玩意安全得多。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3054 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 15:07 · PVG 23:07 · LAX 08:07 · JFK 11:07
    ♥ Do have faith in what you're doing.