docker官方推荐的方式是volume数据卷挂载,但实际操作中,大家更多的是用bind,也就是-v直接挂载本地磁盘。
那么两种方式有什么区别呢?官方的推荐肯定是有道理的,那么又有哪些考虑呢?
- 健壮性,volume由docker统一创建管理数据目录,bind则需要映射的本地目录必须存在,否则会报目录不存在的错,volume则不存在这个问题。换句话说,bind和宿主机目录耦合了。
- volume更适合k8s改造。
- 权限问题,很多情况下通过bind直接映射目录会存在目录权限不足或者容器权限和宿主机权限不匹配的问题,volume可以很大程度避免。
- 如果你需要频繁地更改和备份数据,那么选择bind更合适,volume的数据备份会比较麻烦,需要启动一个临时容器来访问数据。
- bind挂载的时候,宿主机文件为空,而容器中有内容时,容器中的内容也将会被覆盖,变为空。
- bind挂载适合需要在宿主机和容器之间传递数据,而volume挂载适合在容器之间传递分享数据,volume复用性更好。
发表回复