2022-05-25
运维
00
请注意,本文编写于 876 天前,最后修改于 150 天前,其中某些信息可能已经过时。

目录

容器数据卷详解
什么是容器数据卷
docker的理念回顾
使用数据卷
具名和匿名挂载
具名挂载
匿名挂载
区别

Docker容器数据卷详解

容器数据卷详解

什么是容器数据卷

Docker将运用与运行的环境打包形成容器运行, Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了。 为了能保存数据在Docker中我们使用卷。|

卷就是目录或文件,存在于一个或多个容器中,由Docker挂载到容器,但卷不属于联合文件系统(Union FileSystem),因此能够绕过联合文件系统提供一些用于持续存储或共享数据的特性:。

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

docker的理念回顾

  • 将应用和环境打包成一个镜像!
  • 数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!==需求:数据可以持久化==
  • MySQL,容器删了,删库跑路!==需求:MySQL数据可以存储在本地!==
  • 容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!
  • 这就是卷技术!目录的挂载,将我们容器内的目录,挂载到Linux上面!

==总结:容器和主机共享目录。==

数据卷的特点:

  1. 数据卷可在容器之间共享或重用数据
  2. 卷中的更改可以直接生效
  3. 数据卷中的更改不会包含在镜像的更新中
  4. 数据卷的生命周期一直持续到没有容器使用它为止

使用数据卷

#运行时配置命令 -v docker run -it -v 主机目录:容器目录 容器id /bin/bash #验证 docker inspect 容器id mounts写的挂在信息

具名和匿名挂载

具名挂载

就是指定文件夹名称,区别于指定路径挂载,这里的指定文件夹名称是在Docker指定的默认数据卷路径下的。通过docker volume ls命令可以查看当前数据卷的目录情况

查看指定的数据卷信息的命令:docker volume inspect 数据卷名称

匿名挂载

匿名挂载就是在指定数据卷的时候,不指定容器路径对应的主机路径,这样对应映射的主机路径就是默认的路径/var/lib/docker/volumes/中自动生成一个随机命名的文件夹。

区别

所有的docker容器内的卷,没有指定目录的情况下都是在 ==/var/lib/docker/volumes/xxxx/_data==
我们通过具名挂载可以方便的找到我们的一个卷,大多数情况在使用的 ==具名挂载==

# 如何确定是具名挂载还是匿名挂载,还是指定路径挂载! -v 容器内路径 #匿名挂载 -v 卷名:容器内路径 #具名挂载 -v /宿主机路径:容器内路径 #指定路径挂载!

拓展

# 通过-v客器内路径:ro rw改变读写权限 ro readonly # 只读 rw readwrite # 可读可写 # 一旦这个了设置了容器权限,容器对我们挂载出来的内容就有限定了! 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 # ro只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!

本文作者:酷少少

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!