Docker:逻辑卷详细解释

本文详细介绍了Docker中的逻辑卷,包括数据卷的概念、为何使用逻辑卷、卷的种类以及如何创建逻辑卷。讨论了Docker-managed volume和Bind mount volume的差异,并展示了如何在多个容器之间共享数据卷,强调了卷对于容器数据持久化的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 什么是数据卷?

 扩展

 为什么要使用逻辑卷?

 卷

 卷的种类

创建逻辑卷

Docker-managed volume创建

 Bind mount volume 创建

使用go模板过滤insepct中的信息

 2个容器共享容器卷

创建共享存储卷并加入基础镜像的网络


Docke 作为容器运行底层引擎,在组织和运行时候每个程序只运行一个程序及子程序,对于启动这个容器它底层可能不止一层的镜像联合挂载的启动而成

最上层时可写层【读写层】,对于容器的所有的操作包括数据,对内容的修改都是在最上层;对下层的操作比如:删除的操作,是通过写时复制的操作来实现

 什么是数据卷?

Docker 镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层

如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本任然存在,只是已经被读写层中该文件的副本所隐藏,此即 " 写时复制(COW)"机制

如图Layer0上的文件A,在Layer1上修改为C,在Layer2标记为删除D,对于最上层用户来说一定是不可见的;如图Layer0上的文件A,在Layer1上标记为删除D,在Layer2创建了一模一样同名文件/修改C,用户是可见的

 对于这种层级关系,修改、删除的操作效率一般会非常的低,比较存在这么多层,还有哪些隐藏还不是真正的删除的一类的操作,对于哪些IO要求非常高的应用:redies,mysql,在实现持久化存储的时候,就会对IO性能要求很高

当我们运行了Mysql容器,如果写的数据在容器中,容器删除后数据也会删除,为了绕过这种使用的机制我们可以建立数据卷来解决,我们可以理解为在物理机之上找一个文件目录,于容器上的某一个访问目录建立关联关系,进行有效数据【临时文件】同步即使删除了容器,只要重新关联了物理的数据目录,还是可以正常访问数据的;但是容器重新关连了别的物理机相同的目录是没有数据

这样我们就可以把容器当作有生命的动态容器对象来使用,容器关闭就是容器删除的时候,但是底层镜像还在,我么们还可以重新启动;假设我们在重新的启动的时候忘记掉了那个容器管理的是物理机的那个逻辑卷,怎么办?可以的话我们可以用文件来保存那个容器对应的物理机的目录,这大多数是容器编排工具使用的,我们大部分只是通过命令行来启动进行关联,如果通过配置文件的启动,容器就会不限于启动在特定的物理机上

如图容器其A与物理机A的/data/data目录关联,物理机的/data/data/在与文件文件系统NFS的/data/data目录关联做到数据持久化存储;这样就不害怕容器A删除后没有数据,也不会局限于特定主机,可以多集群部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值