当前位置: 首页 > news >正文

9.Docker的容器数据卷使用(挂载)

什么是容器数据卷技术?

到这里,我算是入门docker了!

docker的理念:将环境和应用打包成一个镜像!直接安装就能使用

如果数据都在容器中,那么我们一旦将容器删除,数据就会丢失!因为你只读层没有更改,相当于就是镜像层没有改变

==需求:数据持久化==

比如你有一容器是MySQL,你一旦删除这个mysql容器,里面数据丢失,那你相当于就是删库跑路,风险很大。==需求:这mysql的数据不要存储在本地!==

容器之间可以有一个数据共享的技术,Docker容器中产生的数据,同步到本地!

我把容器删除,但我们的数据不会丢失,其实就是目录的挂载

将我们容器的目录,挂载到我们的虚拟机上或者linux上面

卷就是目录或者文件,存在与一个或中多个容器内,通过docker挂在到容器内,但不属于联合文件系统,提供持续存储或共享数据的特性。

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

可以理解为容器内的数据持续的保存到我们宿主机的磁盘中。

容器数据卷技术能干什么?

1.数据卷可以在容器之间共享或重用数据

2.卷中的更改可以直接实时生效

3.数据卷中的更改不会包含在镜像的更新中

4.数据卷的生命周期一直持续到没有容器使用它为止。

相关的命令与参数

--privileged=true,权限扩容的意思,只有这个参数,这个容器内的root才会有root权限

docker run -d -p 8080:8080 -v /zzyyuse/mycentos/:/tem/centos --privileged=true centos7

-v /zzyyuse/mycentos/:/tem/centos --privileged=true(-v 宿主机的绝对路径:容器内的路径,放开权限)

数据卷案例
1.宿主机和容器内之间映射:保证数据同步

命令docker run -d

首先就是查看宿主机上tmp目录文件,可以发现没有

现在通过命令:

docker run -it --privileged=true -v /tmp/centos10:/tmp/centos10docker -

-name centos10 centos

创建这个数据卷成功

回宿主机上查看tmp目录下,发现自动创建了一个centos10目录

首先是宿主机上操作

我写了一个hello docker内容的文件进入这个目录

进入docker容器,发现这个文件也存在。这里并不能说明内容共享,只是单方面。

接着是在容器里面操作

追加一行代码

在宿主机上打印

可以发现hello baby出现在容器内,这里结合上面内容可以说明数据卷的共享性

查看数据卷是否挂在成功,或者说挂载在哪里?

docker inspect 容器ID

现在我停止容器centos10

在宿主机上创建1.txt

启动,进入这个centos10容器

发现也有1.txt文件,这就是挂载。

(2)容器卷的读写规则

我们上面使用的是默认规则,相互可以写

但这里我们可以设置,宿主机只能读,不能写,或者容器内只能读取

命令:docker run -it --privileged=true -v /tmp/centos10:/tmp/centos10docker:ro -

-name centos10 centos

解释:ro = read only的意思

这里有点错误,无伤大雅

我想在容器里面创建hello文件,但是不可以,而在宿主机上面可以创建hello.txt,

(3)容器卷的继承

1)先容器卷的创建

docker run -it --privileged=true -v /tmp/u1host:/tmp/u1docker --name u1 centos

docker容器 u1

宿主机

2)容器u2继承容器u1的容器卷

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

这个参数中--volumes其实就是我们-v的完整名字

这里我touch创建了一个udocker的txt文件,看看u1是否也可以看见

这里你可以发现u1其实也是

http://www.dtcms.com/a/265448.html

相关文章:

  • ATE FT ChangeKit学习总结-20250630
  • 网络的封包与拆包
  • 基于Java的企业项目管理与协作系统设计与实现
  • Dataset Distillation by Matching Training Trajectories(2203.11932)
  • Eclipse主题拓展
  • mysql索引的底层原理是什么?如何回答?
  • Go语言的sync.Once和sync.Cond
  • Redis 源码 tar 包安装 Redis 哨兵模式(Sentinel)
  • Go调度器的抢占机制:从协作式到异步抢占的演进之路|Go语言进阶(7)
  • 价值实证:数字化转型标杆案例深度解析
  • 网络地址与子网划分:一次性搞清 CIDR、VLSM 和子网掩码
  • 分类树查询性能优化:从 2 秒到 0.1 秒的技术蜕变之路
  • 如何在 IDEA 中设置类路径
  • 探索具身智能新高度——机器人在数据收集与学习策略中的优势和机会
  • Objective-C UI事件处理全解析
  • c++中的绑定器
  • 如何使用AI改进论文写作 ---- 引言篇(2)
  • 设计模式系列(10):结构型模式 - 桥接模式(Bridge)
  • AutoMedPrompt的技术,自动优化提示词
  • 【小技巧】Python + PyCharm 小智AI配置MCP接入点使用说明(内测)( PyInstaller打包成 .exe 可执行文件)
  • Spring Boot + 本地部署大模型实现:基于 Ollama 的集成实践
  • Jetson边缘计算主板:Ubuntu 环境配置 CUDA 与 cudNN 推理环境 + OpenCV 与 C++ 进行目标分类
  • 【Note】《深入理解Linux内核》Chapter 9 :深入理解 Linux 内核中的进程地址空间管理机制
  • MySQL数据库----DML语句
  • 深度学习新星:Mamba网络模型与核心模块深度解析
  • Python入门Day2
  • 【第三章:神经网络原理详解与Pytorch入门】01.神经网络算法理论详解与实践-(3)神经网络中的前向传播、反向传播的原理与实现
  • Python中`import` 语句的执行涉及多个步骤
  • 【Python】批量提取超声波检查图片的某一行数据
  • Docker 容器如何实现资源限制(如 CPU 和内存)