docker提供2种方法对数据卷进行存储。 1、bind mount 2、docker管理数据卷
1、bind mount
使用-v 关键字标识容器数据挂载路径。这里一定要指定宿主机地址和容器地址。
1 | -v <host path>:<container path> |
bind还有其他特性
可以添加单个文件
1 | docker-compose.yaml文件 创建容器 |
可以限制挂载文件夹的权限
1 | docker-compose.yaml文件 添加容器 |
可以看到,bind mount的使用十分的简单和高效。但是也可以看到有很大的不灵活性,因为挂载的时候需要指定宿主机文件系统的具体路径,对后续的数据迁移很不友好。
2、docker管理的volume
也是使用关键字-v ,与第一种方法不同的是不用指出挂载源地址,而要指出一个挂载点。挂载点常用的是local和nfs类型
local默认挂载点是/var/lib/docker/volumes/
这样docker可以管理数据卷。
1 | 创建数据卷 |
docker管理的数据卷,更加安全和高效。但是也有其局限性,不支持文件只支持目录;不能控制文件夹的读写权限,都拥有读写权限;且可移植性强,不需要指定host目录。
现在使用docker-compose创建一个cadvisor容器
1 | # docker-compose.yaml |
可以看到挂载卷使用了前面2种存储方式。
执行docker-compose创建容器,如下图。可以看到会creating volume,这也就是docker volume create