初学者求问,网上有很多资料说不建议将数据库部署在 docker 中,因为一旦 docker 容器被删除了,数据也就没了,那消息队列和 redis 这样的中间件呢?是不是同样也不建议部署在 docker 中呢?
1
lambdaq 2020-10-16 15:56:36 +08:00
下面开始技术总结:喜欢丢数据的同学可以用 docker,不喜欢的的可以不用。
|
2
shiny 2020-10-16 15:57:05 +08:00
理由不成立
|
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
joyhub2140 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
|