王海鱼 发表于 2025-2-13 07:57:27

7. Docker 容器数据卷的使用(超详细的讲解说明)

7. Docker 容器数据卷的使用(超详细的讲解说明)

@
目录

[*]7. Docker 容器数据卷的使用(超详细的讲解说明)
[*]1. Docker容器数据卷概述
[*]2. Docker 容器数据卷的使用演示:

[*]2.1 宿主 和 容器之间映射添加容器卷
[*]2.2 容器数据卷 读写规则映射添加说明
[*]2.3 容器数据卷的继续和共享

[*]3. 最后:

坑:容器卷(一定一定)记得加入 --privileged=true
Docker挂载主机目录访问如果出现 cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个 --privileged=true 参数即可。
如果是CentOS7安全模块会比之前系统版本加强,不安全的会先克制,所以目录挂载的情况被默认为不安全的行为,在SELinux内里挂载目录被克制掉了额,如果要开启,我们一样平常使用--privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也纵然用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528597-365142130.png
1. Docker容器数据卷概述

Docker 容器数据卷是什么:
一句话:有点雷同我们 Redis 内里的 rdb 和 aof 文件。
将 docker 容器内的数据生存进宿主机的磁盘中,如许每次启动的容器实例当中的数据,都是从宿主主机(或者是另外的一个服务器存储数据的)当中读取的数据都还在,并不会因为容器实例删除了,数据而消失了。
运行一个带有容器卷存储功能的容器实例 ——>docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录      镜像名
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录      镜像名Docker 容器数据卷能做什么:?
将运用与运行环境打包镜像, run 后形成容器实例运行,但是我们对数据的要求希望是:持久化的 。
Docker 容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据天然也就没有了。
为了能生存数据在 Docker 中我们使用卷。
特点:

[*]数据卷可在容器之间共享或重用数据。
[*]卷中的更改可以直接实时生效。
[*]数据卷中的更改不会包含在镜像的更新中。
[*]数据卷的生命周期不停持续到没有容器使用它为止。
2. Docker 容器数据卷的使用演示:

2.1 宿主 和 容器之间映射添加容器卷

命令docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录      镜像名
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录      镜像名 公式:docker run -it -v /宿主机目录:/容器内目录 ubuntu /bin/bashdocker run -it --name myu3 --privileged=true -v /home/linux/demo02/tmp/myHostData:/tmp/myDockerData ubuntu /bin/bash

[*]特别说明:--name 表示配置该容器实例的名称。
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528651-2012417314.png
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528674-2125097510.png
检察数据卷是否挂载乐成:
docker inspect 容器ID# docker inspect 68a414008829https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528697-112018234.png
容器和宿主机之间数据共享:

[*]docker修改,主机同步获得
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528622-1325685915.png

[*]主机修改,docker同步获得
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528644-779494514.png

[*]docker容器 stop,主机修改,docker容器重启看数据是否同步。
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528642-1550152232.png
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528613-1364363708.png
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528478-1192851031.png
2.2 容器数据卷 读写规则映射添加说明

https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528600-704376991.png
默认配置的(没有特别说明的容器数据卷),默认就是可读可写(rw) 的。
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw      镜像名只读配置:生成配置容器数据卷的时候 ,ro
只读:容器实例内部被限制,只能读取不能写。
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528625-1921096296.png
这种场景,一样平常不常用,都是因为你要存数据,都是从容器实例当中的数据,写入到主机(或者其他的存储器服务器)当中进行一个备份。防止容器实例关闭了,数据丢失掉了。
2.3 容器数据卷的继续和共享


[*]容器1完成和宿主机的映射:
docker run -it--privileged=true -v /mydocker/u:/tmp --name u1 ubuntuhttps://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528619-1200912639.png

[*]创建容器实例 u2 并继续容器 u1的卷规则
公式如下:
docker run -it--privileged=true --volumes-from 父类--name u2 ubuntudocker run -it--privileged=true --volumes-from u1--name u2 ubuntuhttps://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528552-2032870912.png
u2 就继续 u1 容器实例的全部内容,比如:容器数据卷的路径,以及当中的内容数据。
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528666-4847974.png
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528671-1326324152.png
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528551-48305037.png
3. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时候再次相遇。”
https://img2024.cnblogs.com/blog/3084824/202502/3084824-20250213090528889-225840610.gif

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 7. Docker 容器数据卷的使用(超详细的讲解说明)