系统学习Docker——Docker容器数据卷

艺帆风顺 发布于 2025-04-02 18 次阅读


1.Docker容器数据卷是什么

2.Docker容器数据卷的使用

1.Docker容器数据卷是什么

我们在使用docker启动mysql的时候,mysql的数据是默认保存在docker里面的,如果不进行持久化,容器重启之后数据就会消失,这个时候我们就需要持久化,将docker内的数据保存进宿主机的磁盘中。

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

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

2.Docker容器数据卷的使用

命令:

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

这里加上--privileged=true的原因是:
CentOS7安全模块会比之前系统版本要更强一点,不安全的会被禁止,所以目录挂载的情况会被默认为不安全的行为,如果我们要开启挂载,要使用--privileged=true命令,使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

演示:

sudo docker run -it --privileged=true -v /usr/local/test:/usr/local/test:rw ubuntu

查看数据卷是否挂载成功:

docker inspect 容器ID

宿主机启动,进入容器:

宿主机创建文件:

容器前后区别:

挂载的读写规则:

读写:容器对该文件可读可写

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

只读:容器实例内部被限制,只能读取不能写

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

数据卷的继承和共享:
命令:

docker run -it --privileged=true --volumes-from 父类容器 --name 新容器名 镜像名

演示:

先启动第一个容器:

sudo docker run -it --privileged=true -v /usr/local/test:/usr/local/test:rw --name u1 ubuntu

再启动第二个容器:

docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu

查看容器二的挂载情况,发现也挂载了这个文件。


    版权声明:本文内容来自个人博客segmentfault:苏凌峰,遵循CC 4.0 BY-SA版权协议上原文接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。原文链接:https://segmentfault.com/a/1190000042299161如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。