<>一、什么是容器数据卷?

为什么Docker需要容器数据卷?因为当我们将应用和运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对于数据的要求,是希望能够持久化的!就好比,你安装一个MySQL,结果不小心把容器删了,那岂不是就相当于删库跑路了,这显然是不允许发生的事情!

为了能保存数据在Docker中我们就可以使用卷!让数据 挂载 到我们本地!这样数据就不会因为容器删除而丢失了!

容器卷的作用:
卷就是目录或者文件,存在一个或者多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过 Union File System ,
提供一些用于持续存储或共享数据的特性:卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

容器卷的特点:

* 数据卷可在容器之间共享或重用数据
* 卷中的更改可以直接生效
* 数据卷中的更改不会包含在镜像的更新中
* 数据卷的生命周期一直持续到没有容器使用它为止
所以:总结一句话: 就是容器的持久化,以及容器间的继承和数据共享!

<>二、使用数据卷

<>1、挂载
# 命令 docker run -it -v 宿主机绝对路径目录:容器内目录 镜像名 # 测试 [root@TR ~]# ll total 1052
drwxr-xr-x 9 1001 1001 4096 Nov 29 20:54 nginx-1.21.4 -rw-r--r-- 1 root root
1070260 Nov 29 20:42 nginx-1.21.4.tar.gz # 1、创建一个测试文件夹“pangtaiyi” [root@TR ~]#
mkdir pangtaiyi [root@TR ~]# ll total 1056 drwxr-xr-x 9 1001 1001 4096 Nov 29
20:54 nginx-1.21.4 -rw-r--r-- 1 root root 1070260 Nov 29 20:42 nginx-1.21.4.tar.
gz drwxr-xr-x 2 root root 4096 Dec 1 21:40 pangtaiyi # 2、运行Centos 镜像, 并将容器中的
“/root/pangtaiyi” 目录和本地的“/root/pangtaiyi”目录关联起来 [root@TR ~]# docker run -it -v
/root/pangtaiyi:/root/pangtaiyi centos /bin/bash [root@2cb343981d5b /]# ls bin
dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp
usrvar [root@2cb343981d5b /]# cd root [root@2cb343981d5b ~]# ls anaconda-ks.cfg
anaconda-post.log original-ks.cfg pangtaiyi [root@2cb343981d5b ~]# cd pangtaiyi
# 3、在 “pangtaiyi”文件夹下创建一个“pangtaiyi.txt” 文件 [root@2cb343981d5b pangtaiyi]#
touch pangtaiyi.txt [root@2cb343981d5b pangtaiyi]# ls pangtaiyi.txt # 4、退出容器,
看下本地关联的目录下是否有文件生成 [root@2cb343981d5b pangtaiyi]# [root@TR ~]# [root@TR ~]# cd
pangtaiyi [root@TR pangtaiyi]# ll total 0 -rw-r--r-- 1 root root 0 Dec 1 21:42
pangtaiyi.txt
<>2、查询挂载情况
# 语法 “docker inspect 容器ID” [root@TR ~]# docker inspect 2cb343981d5b [ { "Id":
"2cb343981d5b4181869b807b51c08af487534333073013186ee4ed540f23b3d5", "Created":
"2021-12-01T13:41:54.89582656Z", "Path": "/bin/bash", "Args": [], "State": {
"Status": "running", "Running": true, "Paused": false, "Restarting": false,
"OOMKilled": false, "Dead": false, "Pid": 1850114, "ExitCode": 0, "Error": "",
"StartedAt": "2021-12-01T13:41:55.330564955Z", "FinishedAt":
"0001-01-01T00:00:00Z" }, .................. "Mounts": [ { "Type": "bind",
"Source": "/root/pangtaiyi", "Destination": "/root/pangtaiyi", "Mode": "", "RW"
: true, "Propagation": "rprivate" } ], ........ } ]
可以看到在 Mounts 中, 有我们之前挂载的两个路径。

技术
©2019-2020 Toolsou All rights reserved,
TypeScript:函数类型接口8道大厂指针笔试题让你秒杀指针!!!MySQL 日期时间加减mysql 查询条件之外的数据_mysql 查询符合条件的数据查linux的操作系统版本,如何查看Linux操作系统版本?将String类型转换成Map数据类型使用uuid做MySQL主键,被老板,爆怼一顿C语言中的字符串函数和字符函数linux服务器中毒排查--基础篇C# ASCII码字符转换