什么是容器数据卷

什么是容器数据卷

卷就是目录或者文件,存在于一个或者多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能逃过Union file system 提供的一些持续存储或者共享数据的特性

卷的设计目的就是数据持久化,完全独立于容器的生存周期,因此docker不会在容器删除时删除其挂载的数据卷

将docker容器内的数据保存进宿主机的磁盘中

使用数据卷

方式一:直接使用命令挂载 -v

docker run -it --privileged=true -v 主机目录:容器内目录 镜像名

使用命令查看挂载详情,找到Mounts

docker inspect containerID

具名和匿名挂载

匿名挂载

-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx

查看所有挂载目录命令

[root@swcode ~]# docker volume ls
DRIVER VOLUME NAME
local 85a3880d15ec86f9a8324f2bdc172fa6dc29e1fb2c8095be5634ea2e35bfddc5

VOLUME NAME是一串字符串,即为匿名挂载

具名挂载

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx

查看所有挂载目录命令

[root@swcode ~]# docker volume ls
DRIVER VOLUME NAME
local 85a3880d15ec86f9a8324f2bdc172fa6dc29e1fb2c8095be5634ea2e35bfddc5
local juming-nginx

juming-nginx就是卷名,这种就是具名挂载

查看具体目录

[root@swcode ~]# docker volume inspect juming-nginx
[
{
"CreatedAt": "2023-02-02T17:00:15+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
"Name": "juming-nginx",
"Options": null,
"Scope": "local"
}
]

所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxx/_data

如何确定是具名挂载还是匿名挂载,还是指定路径挂载!

-v 容器内路径			# 匿名挂载
-v 卷名:容器内路径 # 具名挂载
-v /宿主机路径:容器内路径 # 路径挂载

拓展

通过rorw改变读写权限

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

数据卷容器

容器数据同步