一、什么是数据卷? (volume)
volume是docker的一个对象, 它是为了能够让容器中的数据(文件)永久保存,能够让宿主机直接访问容器中的文件,让容器之间能够共享文件而引入的对象。
有了数据卷之后,容器的关闭或者崩溃就不会再导致数据的丢失, 也方便了数据的备份,迁移和恢复。
二、 数据卷(volume)的特点
特点:
1. 数据卷存在于宿主机的文件系统中, 独立于容器,和容器的生命周期是分离的。
2. 数据卷可以是目录也可以是文件,容器可以利用数据卷于宿主机进行数据共享和交换。
3. 容器启动初始化时,如果容器使用的镜像包含了数据,这些数据会复制到数据卷中
4. 容器对数据卷的修改是实时进行的。
5. 数据卷的变化不会影响镜像的更新,数据卷是独立于联合文件系统的,镜像是基于联合文件系统的。
6. 数据卷能在不同的容器之间共享和重用
其他情况:
下面两个规则很重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容,掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。
1. 如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中
2. 如果挂载一个非空的数据卷到容器中的一个目录,那么容器中的目录中会显示数据卷中的数据,如果原来的容器中的目录中有数据, 那么这些原始的数据会被隐藏掉。
三、 数据卷挂载的三种方式
1. bind mounts 方式:将宿主机上的一个文件或目录被挂载到容器上。
利用docker run/create的参数为容器挂载数据卷
方式一: -v, --volume参数用法:
-v 宿主机文件或文件夹路径:容器中的文件或者文件夹路径
方式二:--mount参数
--mount type=bind, src=宿主机文件或文件夹路径, dst=容器中的文件或者文件夹路径
注意:src指定的文件和路径必须提前创建或存在
命令演示:
2. volumes 方式(使用较多):由Docker创建和管理。使用docker volume命令管理
利用docker run/create为容器挂载数据卷
用法:
方式一: -v, --volume参数
-v VOLUME-NAME:容器中的文件或者文件夹路径
方式二:--mount 参数
--mount type=volume, src=VOLUME-NAME, dst=容器中的文件或者文件夹路径
volume对象管理命令:
docker volume create | 创建数据卷对象 |
docker volume inspect | 查看数据卷详细信息 |
docker volume ls | 查看已创建的数据卷对象 |
docker volume prune | 删除未被使用的数据卷对象 |
docker volume rm | 删除一个或多个数据卷对象 |
3. tmpfs mounts方式:tmpfs 是一种基于内存的临时文件系统。tmpfs mounts 数据不会存储在磁盘上。 --mount type=volume, src=VOLUME-NAME, dst=容器中的文件或者文件夹路径
利用docker run/create为容器挂载数据卷
用法: --mount type=tmpfs, dst=PATH