了解一下docker容器数据卷

网友投稿 236 2022-10-19

了解一下docker容器数据卷

容器卷就是目录或者文件,存在于一个或者多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此docker不会在容器删除时删除其挂载的数据卷。容器之间可以有一个数据共享的技术,docker容器中产生的数据,同步到本地。这就是卷技术,目录的挂载,将我们的容器内的目录,挂载到Linux宿主机上!

一句话:类似redis的edb和aof持久化,将docker容器内的数据保存进宿主机的磁盘中,运行一个带有容器卷存储功能的容器实例。

举例:如果数据都存在容器中,那么把容器删除,数据就会丢失。那么数据可以持久化;Mysql容器删了,数据也都丢了,Mysql数据可以存储在本地!

容器数据卷是为了实现容器的持久化和同步操作!容器间也是可以实现数据共享的(多个容器可以共享一个地方的数据)

特点总结:

数据卷可以在容器之间共享或者重用数据卷中的更改可以直接实时生效,爽。docker修改,主机同步获得;主机修改,docker同步获得;docker容器stop,主机修改,docker容器重启,数据依然同步。数据卷中的更改不会包含在镜像的更新中数据卷的生命周期一直持续到没有容器使用它为止

测试

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名 //命令

docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=mytest ubuntu

docker inspect 容器ID //用来查看容器的信息

docker inspect c19f6424169b

这里目前只有一个对应目录挂载,实际可以挂载多个,比如日志、数据等目录。

容器与宿主机文件权限设置

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名 //命令 ,默认是rw,可读可写

有时候让容器里是只读的,容器内部被限制,只能读不能写。

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 //命令 ,是ro,也就是read only首字母,只可读

容器卷的继承和共享

docker run -it --privileged=true --volumes-from 父类 --name mytest2 ubuntu

比如运行了一个测试父级容器

docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=mytest1 ubuntu //mytest1

子类继承父级

docker run -it --privileged=true --volumes-from mytest1 --name mytest2 ubuntu

假如父级容器意外终止,依然可以容器与宿主机传递,也类似于mysql的数据库主从,好比宿主机相当于主库,两个容器相当于两个从库。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实战之图书管理系统的实现
下一篇:Docker镜像与容器操作命令详解与实践
相关文章

 发表评论

暂时没有评论,来抢沙发吧~