• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rpre
V2EX  ›  程序员

Docker 为何要做持久化( persistance)?

  •  
  •   rpre · Oct 8, 2016 · 6690 views
    This topic created in 3521 days ago, the information mentioned may be changed or developed.

    在使用 Docker 的时候,有没有可能完全不需要做持久化? 情况 1 ,如果只将 docker 看做一个虚拟机用,一直只启动一个 container ,这种情况是肯定不需要做持久化的。(虽然这种方式失去了使用 docker 的意义所在) 情况 2 ,如果每次 run docker 的时候,都使用-d 选项,让每个 container 一直存在,每次新请求都从这个已有的 container 中去解析,那么也不需要做持久化。 情况 3 ,假设我用“复制”的同步方式,搭建一个 Mysql 的集群,每个集群的节点都跑在 docker 上,那么当一个节点挂了之后,重启后其他节点的内容会复制过来,那么即使这个容器没有做持久化,也不影响业务。

    当然 best practice 中已经写明要通过 volume 或 commit 方式做持久化。但是在思考这些问题的时候,确实上面的几个想法也说的通,所以请大家帮忙分析一下,或者举出一些实际中经常遇到的情况,来反驳上面的几条假设。

    先谢谢各位了

    15 replies    2016-10-09 17:41:11 +08:00
    lightening
        1
    lightening  
       Oct 8, 2016
    主进程挂了 container 就没了
    binux
        2
    binux  
       Oct 8, 2016
    你的假设都是没有持久化需求,那当然不要持久化了。
    imxieke
        3
    imxieke  
       Oct 8, 2016
    关注一波:, 不过第 1 个有没有考虑宕机问题?或者容器内部出错需要重启的问题?
    rpre
        4
    rpre  
    OP
       Oct 9, 2016
    @binux 感谢回复。我的问题正式,持久化需求,在实际业务中,一般体现在哪里。
    @imxieke 同意。
    crysislinux
        5
    crysislinux  
       Oct 9, 2016
    @rpre 要保存数据就是持久化,包括数据库,文件
    crysislinux
        6
    crysislinux  
       Oct 9, 2016
    没注意你提到了 MySQL 。。
    ldbC5uTBj11yaeh5
        7
    ldbC5uTBj11yaeh5  
       Oct 9, 2016 via Android
    docker 💊,他家路子最近歪得厉害。

    网络和存储一直是它家老大难问题,现在根本没花力气解决这些,最终只会沦落大部分时候只作为为程序员的开发和运维工具存在。
    yeasy
        8
    yeasy  
       Oct 9, 2016
    一个是持久化,一个是性能~
    xiqingongzi
        9
    xiqingongzi  
       Oct 9, 2016 via Android
    不做持久化很简单啊,容器只处理业务逻辑,数据都放在外面。
    Citrus
        10
    Citrus  
       Oct 9, 2016 via iPhone
    数据库不做持久化?心这么大?你能保证某天你的所有容器不会先后挂掉来不及复制么?如果你认为你的数据丢了也无所谓,那当我没说。。。丢了无所谓的数据本身就不需要持久化。
    denghongcai
        11
    denghongcai  
       Oct 9, 2016
    MySQL 不持久化,机房断电了呢?异地容灾光纤断了呢?要往最坏的方向去想
    killerv
        12
    killerv  
       Oct 9, 2016
    MySQL 容器不需要做持久化处理吧,把 MySQL 的数据存储到容器外面
    wizardoz
        13
    wizardoz  
       Oct 9, 2016
    我用的不多,但是我遇到有数据的容器都是额外挂载数据目录进去.
    因为我不知道要怎么处理数据放在容器里导致容器越来越大的情况.
    guyskk
        14
    guyskk  
       Oct 9, 2016 via Android
    复制并不能避免人为操作的错误。例如管理员突然删除了产品数据,或者部署了错误版本的代码导致搞乱了部分或者全部数据。所以必须要有一个能够让我们从这种场景中恢复数据的备份。

    --- Python web 开发, p181

    刚看书看到这段,大概是这个原因
    mritd
        15
    mritd  
       Oct 9, 2016
    有些没看太懂,不过我想说的是确实很多东西需要持久化,比如程序日志,这些日志量很大,而且我们还配合了日志追踪 zipkin ,包括 ELK 分析等等;还有比如你 docker 里跑得是一个 图片上传的 模块,那么这些图片文件肯定要持久化啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2812 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 07:26 · PVG 15:26 · LAX 00:26 · JFK 03:26
    ♥ Do have faith in what you're doing.