
初学者求问,网上有很多资料说不建议将数据库部署在 docker 中,因为一旦 docker 容器被删除了,数据也就没了,那消息队列和 redis 这样的中间件呢?是不是同样也不建议部署在 docker 中呢?
1 tf2 2020-10-16 15:56:36 +08:00 下面开始技术总结:喜欢丢数据的同学可以用 docker,不喜欢的的可以不用。 |
2 shiny PRO 理由不成立 |
3 nomansky 2020-10-16 16:00:29 +08:00 谁说的 docker 删了数据就没了,csdn 看到的资料?容器是可以持久化数据的,建议了解下 docker 的原理 |
4 luckyrayyy 2020-10-16 16:01:35 +08:00 docker 本身是无状态的,不适合存储有状态的服务。但是不等于有状态的就不能上 docker 。你可以把磁盘挂载上去,当然这样 docker 就不能漂移了。或者把存储和计算分开,好像阿里很早之前就把数据库容器化了,不过容器里面只有计算单元,存储另外方的。 |
5 eric96 2020-10-16 17:31:03 +08:00 docker 是可以挂载磁盘的,像 k8s 这种,支持各种云服务提供的存储服务 |
6 xurunfei 2020-10-16 17:48:05 +08:00 将数据挂载到宿主机就行了 |
7 nxforce 2020-10-16 17:55:57 +08:00 大部分生产环节的容器,都会把日志和数据,配置,相关的写在挂载的 volume 上面的,这部分是独立于容器的生命周期的 更容易理解的说法应该是,容器就是执行中的代码,和数据是分离的 建小站,访问量也小,把所有组件仍容器内,简直不要太爽。 大流量站点,对性能要求苛刻的,可以把数据库组件移出容器,以贴近原生的速读运行。 |
8 zzl22100048 2020-10-16 20:11:02 +08:00 via iPhone 我把你这里的 docker 理解成容器化吧,statefulset 不就专门用于有状态的应用么 |
9 EnochLiang OP @joyhub2140 感谢 |
10 EnochLiang OP @luckyrayyy 我可以理解为要在容器外独立出一个存储单元,然后把这个存储单元挂载到容器中,容器只提供计算服务,这样做的话,就不用担心数据丢失了是吗? |
11 julyclyde 2020-10-19 10:38:08 +08:00 if doubt, don't do it |