标准答案
- 容器可写层适合临时运行时文件,不适合依赖容器删除后仍保留的数据。
- volume 有独立生命周期和运行时管理方式,通常更适合数据库数据或应用持久化目录。
- bind mount 直接暴露宿主机路径,便于开发和共享文件,但会扩大宿主机路径、权限和数据破坏风险。
- 选择时明确数据 owner、备份、迁移、权限、写入性能和容器替换行为。
题目解析
容器 writable layer 随容器生命周期变化,适合临时状态;volume 由运行时管理,生命周期可以独立于容器;bind mount 直接暴露宿主机路径,控制力和风险都更高。数据库、队列和上传文件等需要持久化的数据不能依赖 writable layer。
volume 只解决存储位置和生命周期,不自动提供一致性备份、跨故障域复制或恢复能力。生产应明确备份点、恢复顺序、权限、容量和演练结果;bind mount 要限制路径和只读权限,避免把宿主机敏感目录暴露给容器。
常见误区
- 误区:把容器可写层当数据库存储。改正:使用明确的持久化存储,并定义备份、恢复和扩容策略。
- 误区:生产随意 bind mount 宿主机根目录。改正:只挂载必要路径,优先只读,并限制运行账户权限。
- 误区:只配置 volume 不验证恢复。改正:定期做一致性备份和恢复演练,记录耗时与数据完整性。