目录
2.3 查看 /var/lib/docker/volumes路径下,会发现所创建的数据卷
前言
Docker 数据管理在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作。
一、容器中的管理数据
1、方式
数据卷 Data Volumes 容器内数据直接映射到本地主机环境;
数据卷容器(Data Volume Containers 使用特定容器维护数据卷;
2、数据卷
数据卷就是在宿主中可以在容器之间进行共享和重用的一系列和文件和文件夹,通过docker run -v命令可以将数据卷挂载到对应的容器目录空间,进行文件读取,容器卷特性如下
* 数据卷可以在容器之间共享和重用,容器间传递数据将变得高效方便
* 对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作
* 对数据卷的更新不会影响镜像,解耦了应用和数据
* 卷会一直存在,直到没有容器使用,可以安全地卸载它
3、数据卷容器
已经存在一个挂载了数据卷的容器;由于数据卷在容器之前是可以共享的,所以此时如果存在其他容器通过docker run --volumes-from [容器别名]命令挂载到该容器上,则该容器可以被称之为数据卷容器,其主要功能是提供数据卷供其他容器挂载。当数据卷容器宕机后,并不会造成数据卷的回收卸载,数据卷会继续挂载在其他容器中。当全部挂载该数据卷的容器全部宕机后,该数据卷才会卸载。
二、数据卷
1、创建数据卷
[root@docker ~]# docker volume create vtest1
vtest1
[root@docker ~]# docker volume create
93960c97d9ecdb820403d32e288e3fc844dcdadee757b46b3a7bb20a9c7950c0
2、查看信息
2.1 列出已知的所有卷
[root@docker ~]# docker volume ls
DRIVER VOLUME NAME
local 93960c97d9ecdb820403d32e288e3fc844dcdadee757b46b3a7bb20a9c7950c0
local vtest1
2.2 显示一个或多个卷上的详细信息
[root@docker ~]# docker volume inspect vtest1
[
{
"CreatedAt": "2020-09-13T22:08:32+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/vtest1/_data",
"Name": "vtest1",
"Options": {},
"Scope": "local"
}
]
2.3 查看 /var/lib/docker/volumes路径下,会发现所创建的数据卷
[root@docker ~]# ls /var/lib/docker/volumes
93960c97d9ecdb820403d32e288e3fc844dcdadee757b46b3a7bb20a9c7950c0
vtest1
3、 删除数据卷
Volume 只有在下列情况下才能被删除:
1)docker rm -v删除容器时添加了-v选项
2)docker run --rm运行容器时添加了--rm选项
否则,会在/var/lib/docker/volumes目录中遗留很多不明目录。
可以使用下面方式找出,然后删除_data目录下的数据文件
[root@docker]# docker inspect huihui|grep /var/lib/docker/volumes
"Source": "/var/lib/docker/volumes/97aa95420e66de20abbe618fad8d0c1da31c54ce97e32a3892fa921c7942d42b/_data",
可以使用 docker rm -v 命令在删除容器时删除该容器的卷。示例如下:
[root@docker]# docker run -d -P --name huihui -v /www docker.io/centos
69199905a74cb360935e32f4e99f7f11319f6aa36033a920aa0bae25874f5c69
[root@docker]# docker volume ls
DRIVER VOLUME NAME
local 5341c03f3b94f13f4c86d88ccb0f3b63487adf30dea7ae6b2d06e947235e7330
local 97aa95420e66de20abbe618fad8d0c1da31c54ce97e32a3892fa921c7942d42b
local data_volume
[root@docker]# docker rm -vf huihui
huihui
[root@docker]# docker volume ls
DRIVER VOLUME NAME
local 5341c03f3b94f13f4c86d88ccb0f3b63487adf30dea7ae6b2d06e947235e7330
local data_volume
4、 挂载数据卷
可以直接挂载宿主机文件或目录到容器里,可以理解为目录映射,这样就可以让所有的容器共享宿主机数