【简介】
宿主机的某一目录与容器中的某一目录建立的一种绑定关系,这就是“存储卷”
它有三个特性
1.它可以绕过联合文件系统, 直接作用于宿主机的目录
2.容器和宿主机的这一绑定关系指向了同一目录, 因此两个目录之间的数据是同步的,宿主机和容器都能读到
3.容器的销毁并不会销毁存储卷中的数据
【存储卷分类】
目前
Docker
提供了三种方式将数据从宿主机挂载到容器中
【volume:docker 管理卷】
默认映射到宿主机的/var/lib/docker/volumes 目录下,只需要指定容器内挂载路径,容器引擎 daemon 会在宿主机自行创建对应的目录(由docker来管理)
这种方式让用户使用的很省心,但缺陷是用户无法指定宿主机目录,因此可用于临时存储
【bind mount:绑定数据卷】
宿主机和容器内的绑定路径都需要人工手动指定
这种方式可以精准地控制数据的存储, 因此实际运用中这种存储卷的使用十分广泛
【tmpfs mount:临时数据卷】
它被绑定与宿主机内存中,一旦容器停止运行,
tmpfs mounts 就会被移除,数据就会丢失
一般用于高性能的临时数据存储。
【创建卷】
存储卷可以通过命令方式创建,也可以在创建容器的时候通过 -v 和 --mount 指定
【方式一:命令创建】
【创建存储卷】
语法
docker volume create [OPTIONS] [VOLUME]

未指定名称, 创建出来的就是
匿名卷
指定名称则创建出来的是命名卷
○ -d, --driver:指定驱动,默认是 local
○
--label
:
指定元数据
【查看卷详细信息】
语法docker volume inspect [OPTIONS] VOLUME [VOLUME...]

○
-f
:
指定相应个格式,如json
【列出卷】
语法docker volume ls [OPTIONS]

○
--format
:
指定相应格式,如
json,table
○
--filter,-f:
过滤
○
-q:
仅显示名称
【删除卷(需要对应容器不使用)】
语法
docker volume rm [OPTIONS] VOLUME [VOLUME...]

○
-f,--force:
强制删除
【删除所有不使用的本地匿名卷】
语法
docker volume prune [OPTIONS]
○
--filter:
过滤
○
-f, --force
:
不提示是否删除
【方式二:通过 -v 和 --mount 指定】
【-v 参数】
语法
docker run -v name:directory:[options]......
○
第一个参数
name
:卷名称(如果本地没有, 将自动创建)(如果name指定为宿主机目录, 则会创建绑定数据卷, 而不是docker管理卷)
○
第二个参数
directory
:卷映射到容器内的目录
○
第三个参数
options
:选项,如 ro
表示
readonly

【--mount 参数】
语法
--mount '<key>=<value>,<key>=<value>'
○
type
: 类型表示
volume
, bind,or
tmpfs(表明创建的是三种存储卷中的哪一种)
○
source
,
src :对于命名卷,这是卷的名称。对于匿名卷,省略此字段。{如果type
指定为bind, 同时src指定为宿主机目录, 则会创建绑定数据卷, 而不是docker管理卷)
○
destination
,
dst,target
:文件或目录挂载在容器中的路径
○
ro,readonly:
只读方式挂载
