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

2016-10-08 23:14:58 +08:00
 rpre

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

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

先谢谢各位了

5933 次点击
所在节点    程序员
15 条回复
lightening
2016-10-08 23:31:48 +08:00
主进程挂了 container 就没了
binux
2016-10-08 23:35:08 +08:00
你的假设都是没有持久化需求,那当然不要持久化了。
imxieke
2016-10-08 23:35:41 +08:00
关注一波:, 不过第 1 个有没有考虑宕机问题?或者容器内部出错需要重启的问题?
rpre
2016-10-09 00:59:34 +08:00
@binux 感谢回复。我的问题正式,持久化需求,在实际业务中,一般体现在哪里。
@imxieke 同意。
crysislinux
2016-10-09 01:01:02 +08:00
@rpre 要保存数据就是持久化,包括数据库,文件
crysislinux
2016-10-09 01:03:56 +08:00
没注意你提到了 MySQL 。。
ldbC5uTBj11yaeh5
2016-10-09 01:14:15 +08:00
docker 💊,他家路子最近歪得厉害。

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

--- Python web 开发, p181

刚看书看到这段,大概是这个原因
mritd
2016-10-09 17:41:11 +08:00
有些没看太懂,不过我想说的是确实很多东西需要持久化,比如程序日志,这些日志量很大,而且我们还配合了日志追踪 zipkin ,包括 ELK 分析等等;还有比如你 docker 里跑得是一个 图片上传的 模块,那么这些图片文件肯定要持久化啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/311260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX