最近在研究 k8 和 docker 容器,看到书中有如此介绍:
大概意思就是说产生的数据不要放在容器里面,例如在用容器跑了一个 rabbitmq,那该rabbitmq 生产的数据(持久化的消息、日志)都需要通过文件映射写会到宿主机吗?
最近在研究 k8 和 docker 容器,看到书中有如此介绍:
大概意思就是说产生的数据不要放在容器里面,例如在用容器跑了一个 rabbitmq,那该rabbitmq 生产的数据(持久化的消息、日志)都需要通过文件映射写会到宿主机吗?
应该映射在宿主机。
一方面是由于重启后数据会丢失。
另外一方面是因为 docker 容器不能对扩张的空间自动回收,比如你生成了 1G的文件,再删除,容器是不会释放占用的磁盘空间(外部释放也很困难)。
为了容器更稳定和长久的运行,任何会增长的文件都应该映射在宿主机上。
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
2 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答798 阅读✓ 已解决
是的,在实际部署中,容器并不是持久的,可能会因为一些原因重启,而重启后直接保存在容器中的数据就会丢失。
所以对于需要持久化的数据,应该使用数据卷(Volume)方法挂载到外部。