Docker数据卷概述
数据卷是提供数据持久化存储,数据卷完全独立与容器的生命周期,容器在销毁时不会对数据卷进行销毁,对数据卷所持久化的内容不会长生任何变动。
数据卷类型
- 基于主机文件系统的数据卷
由Docker主机进行管理,在文件系统中(/var/lib/docker/volumes)创建出来的文件夹用于存放数据卷,建议采用此方法进行持久化数据。非Docker进程不应修改文件系统这个文件夹。
- 基于绑定挂载的数据卷
可以存储在网络存储等任何位置,Docker主机或Docker容器上的非Docker进程可以随时修改其中的内容。
- 基于主机内存的数据卷
仅存储在主机系统的内存中,永远不会写入主机系统的文件系统。它可以在容器的生命周期中由容器使用,一般用于存储非持久状态或敏感信息。
![1_jpeg 1_jpeg]()
P.S. 图片来自网络
基于主机文件系统的数据卷
创建数据卷
docker volume create <Volume>
![2_jpeg 2_jpeg]()
查看数据卷
docker volume ls
![3_jpeg 3_jpeg]()
挂载数据卷
docker run -v <Volume>:<ContainerFileSystemPath>:<Mode> <Image>
![4_jpeg 4_jpeg]()
删除数据卷
docker volume rm <Volume>
![5_jpeg 5_jpeg]()
查看数据卷详情
docker volume inspect <Volume>
![6_jpeg 6_jpeg]()
基于绑定挂载
创建绑定挂载至本地文件系统 --mount模式
docker run -it --mount type=bind,source=<src>,target=<dst> <image>
docker inspect <container>
![7_jpeg 7_jpeg]()
创建绑定挂载至本地文件系统 -v模式
docker run -v <HostFileSystemPath>:<ContainerFileSystemPath>:<Mode> <Image>
![7_jpeg 7_jpeg]()
-v 挂载本地文件系统路径如果不存在该路径则会进行创建,但如果使用 --mount挂载本地文件系统路径时如果路径不存在则会产生报错。但两者所执行后的效果是一样的。
基于主机内存的挂载
创建容器并使用内存挂载卷 --mount模式
docker run -it --mount type=tmpfs,dst=<Path> <Image>
![8_jpeg 8_jpeg]()
创建容器并使用内存挂载卷 --tmpfs模式
docker run -it --tmpfs <Path> <Image>
![9_jpeg 9_jpeg]()
额外的选项
#八进制的文件模式,例如1777则是全部可读写。
tmpfs-mode <Auth>
#卷的大小,默认无限制,已byte为单位。
tmpfs-size <Byte>
![10_jpeg 10_jpeg]()
创建容器并使用内存挂载卷,卷的权限为1777,大小为1000k
docker run -it --mount type=tmpfs,dst=/data,tmpfs-mode=1777,tmpfs-size=1024000 centos:latest
![11_jpeg 11_jpeg]()