docker—Volume(数据卷)

docker的镜像是由多个只读的文件系统叠加在一起形成的。当我们在我启动一个容器的时候,docker会加载这些只读层并在这些只读层的上面(栈顶)增加一个读写层。这时如果修改正在运行的容器中已有的文件,那么这个文件将会从只读层复制到读写层。当容器被销毁的时候,容器所对应的数据也会一并删除,容器中的数据不是持久化的。
为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。
在Docker中,只读层及在顶部的读写层的组合被称为Union File System(联合文件系统)。

Volume的作用

通过数据卷可以在容器之间实现共享和重用
对数据卷的修改会立马生效(非常适合作为开发环境)
对数据卷的更新,不会影响镜像
卷会一直存在,直到没有容器使用

volume的使用
首先,我们创建一个目录ROOT,然后在目录下创建一个index.html的文件,内容为hello docker;
在这里插入图片描述
接着将这个目录挂在到tomcat容器的ROOT目录下,启动容器。

docker run -p 8080:8080 --name tomcat -d -v /usr/local/docker/tomcat/ROOT/:/usr/local/tomcat/webapps/ROOT tomcat

/usr/local/docker/tomcat/ROOT/是宿主机的目录,/usr/local/tomcat/webapps/ROOT是tomcat镜像的目录,-v 来创建一个数据卷并挂载到容器上。
接着以交互的方式进入容器,查看ROOT目录下的文件,只有index.html。
在这里插入图片描述也可以将这个目录挂在到其他容器。

docker run -p 8081:8080 --name tomcat1 -d -v /usr/local/docker/tomcat/ROOT/:/usr/local/tomcat/webapps/ROOT tomcat

数据共享

如果想要实现容器间的数据共享,那么需要授权一个容器访问另一个容器的Volume。我们可以在使用docker run时使用-volumes-from参数来进行指定。

 docker run -it -h NEWCONTAINER --volumes-from tomcat  tomcat bash

在这里插入图片描述

查看所有的 数据卷

 docker volume ls

查看数据卷信息

docker volume inspect my-vol

删除数据卷

docker volume rm my-vol

数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个命令。

无主的数据卷可能会占据很多空间,要清理请使用以下命令

 docker volume prune
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值