一、卷
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性;
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
将docker容器内的数据保存进宿主机的磁盘中
特点:
- 数据卷可在容器之间共享或重用数据
- 卷中的更改可以直接实时失效
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止
二、宿主vs容器之间映射添加容器卷
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it --privileged=true -v /tmp/hostData:/tmp/dockerData --name=u1 ubuntu
查看数据卷是否挂载成功:
docker inspect 50e0cfed8acd
就算容器停止了,宿主机数据卷的修改依然会同步到容器内
三、读写规则映射添加说明
- 默认读写(即在容器目录后缀:rw)
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
docker run -it --privileged=true -v /tmp/hostData:/tmp/dockerData:rw --name=u1 ubuntu
- 只读:容器内部被限制,只能读取不能写,但若是宿主机写入数据卷,可以同步给容器读取
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
docker run -it --privileged=true -v /tmp/hostData:/tmp/dockerData:ro --name=u1 ubuntu
四、卷的继承和共享
docker run -it --privileged=true --volumes-from 父类 镜像名
docker run -it --privileged=true --volumes-from u1 --name=u2 ubuntu
继承只是继承了数据卷挂载的规则,u1停止与否不影响u2数据读写