Docker 之 数据卷

目录

1.  数据卷是什么

1.1 运行一个带有容器卷存储功能的容器实例

2.能干什么

3. 容器卷案例

3.1 宿主机vs容器之间映射添加容器卷

3.1.1 命令添加:

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

3.1.3 容器和宿主机之间数据共享

3.2 读写规则映射添加说明

3.2.1 读写(默认)

3.2.2 只读

3.3 卷的继承和共享

3.3.1 容器1完成和宿主机的映射

3.3.2 容器2继承容器1的卷规则


1.  数据卷是什么

有点类似我们Redis里面的rdb和aof文件。

将docker容器内的数据保存进主机的磁盘中。

卷就是目录或文件,存在与一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。

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

1.1 运行一个带有容器卷存储功能的容器实例

docker run -it --name=u1 --privileged=true -v /主机绝对路径目录:/容器内目录 镜像名docker run -it --name=u1 --privileged=true -v /tmp/host_data:/tmp/docker_data ubuntu

2.能干什么

Docker容器产生的数据,如果不备份,那么当容器实例被删除后,容器内的数据自然也就没有了,为了能保存数据在docker中我们使用卷。

特点:

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

3. 容器卷案例

3.1 宿主机vs容器之间映射添加容器卷

3.1.1 命令添加:

docker run -it --name=u1 --privileged=true -v /主机绝对路径目录:/容器内目录 镜像名
docker run -it --name=u1 --privileged=true -v /tmp/host_data:/tmp/docker_data ubuntu

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

docker inspect 容器ID"Mounts": [{"Type": "bind","Source": "/tmp/host_data","Destination": "/tmp/docker_data","Mode": "","RW": true,"Propagation": "rprivate"}],

3.1.3 容器和宿主机之间数据共享

在宿主机上指定的目录下创建一个文件,在docker指定的目录下也会出现。一一映射,双向同步。

如果docker stop之后,在宿主机上添加一个文件 c.txt,再次启动docker,文件c.txt 也会出现在docker 的指定目录下。

3.2 读写规则映射添加说明

3.2.1 读写(默认)

docker run -it --name=myname --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名默认和上节相同,默认就是rw

3.2.2 只读

容器实例内部被限制,只能读取不能写(read only)

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

如果宿主机写入内容,是可以同步到容器的。只显示容器的写。

3.3 卷的继承和共享

3.3.1 容器1完成和宿主机的映射

参照上面的映射命令 : docker run -it --name=r1 --privileged=true -v /tmp/u:/tmp/u ubuntu

此时宿主机和容器双向同步。

3.3.2 容器2继承容器1的卷规则

docker run -it --name=r2 --privileged=true --volumes-from 父容器 ubuntu
docker run -it --name=r2 --privileged=true --volumes-from r1 ubuntu

如果在r2 中指定目录创建一个问价,分别在r1和宿主机上的指定目录也会存在。

如果kill r1,在宿主机增加一个文件,此时r2上也会出现。是因为r2继承的是r1挂载路径的规则,r1挂了之后,r2不受影响。

如果再重启启动r1,在r1的指定目录下也会有aa.txt 文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java系统部署到Linux

1、安装java 1.8JDK 卸载Open JDK 首先,我们先检查系统是否自带了 JDK。输入命令 java -verison批量删除 rpm -qa | grep java | xargs rpm -e --nodeps下载并安装JDK 我们在 user 目录下建立一个新的 java文件夹,用来存放 JDK文件。 jdk下载地址 …

快速上手 Elasticsearch:Docker Compose 部署详解

最近面试竞争日益激烈,Elasticsearch作为一款广泛应用的中间件,几乎成为面试中必考的知识点。最近,AIGC也备受关注,而好多的AI项目中也采用了Elasticsearch作为向量数据库,因此我们迫切希望学习Elasticsearch。对于学习…

全球首位AI程序员Devin的诞生及其对程序员职业未来的影响

写在开头 在人工智能(AI)的浪潮下,全球首位AI程序员Devin的出现,无疑为软件开发领域带来了前所未有的变革。Devin不仅是一个编程工具,更是一个标志性的里程碑,预示着AI技术在编程领域的应用将更加广泛和深…

Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别?

Docker简介 前言 前端有必要学习Docker吗?有!!不仅要学Docker,还要学习Kubernetes (K8s),Jenkins 那问题来了,Docker,k8s,jenkins到底要先学习那个呢?当然是Docker 总结来说,先学习…

typescript关键知识点总结(一)

一 聊聊typescript的核心原理 TypeScript 是一种基于 JavaScript 的强类型编程语言,它使得在前端项目开发过程中更加严谨且流畅,一定程度上保证了大型前端项目程序的健壮性。 但是 TypeScript 并不可以直接运行,而是需要转换成 JavaScript 代码才可以在 Node.js 或浏览器环…

C++初阶:STL容器list的使用与初版自实现

目录 1. list的接口与使用1.1 默认成员函数1.2 迭代器与容量相关成员函数1.3 存储数据操作相关成员函数1.4 其他list操作成员函数 2. list的自实现2.1 list的自实现功能2.2 list的结点结构2.3 list的迭代器2.3 list的结构2.4 list迭代器的运算符重载2.5 list的成员函数 3. cons…

双指针(滑动窗口)-算法刷题

一.移动零(. - 力扣(LeetCode)) 算法思想 : 设置两个指针left,right,将数组分为三块[0,left]为不为0的元素,[left1,right-1]为0元素,[right,num.size()-1]为未扫描的区域&#xff0c…

第四百二十二回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"自定义标题栏"相关的内容,本章回中将介绍自定义Action菜单.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在这里提到的…

从零开始一步一步掌握大语言模型---(3-词表示-word representation)

词表示和语言模型 词表示是指把自然语言里面最基本的单位,也就是词,将其转换为机器所能理解的过程。 词表示的目的: 1. 计算词之间的相似度; 2. 推理词之间的关系。 1.最早是如何表示一个词呢? 设目标词是X&#…

day3-QT

1>使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函。将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是…

JS操作元素的内容

对象.innerText 属性 对象.innerHTML 属性 <body><div classbox>文字</div><script>//首先获取元素const box document.querySelector(.box)console.log(box.innerText)</script> </body> 1.元素innerText属性 将文本内容添加到标签任…

【Redis知识点总结】(六)——主从同步、哨兵模式、集群

Redis知识点总结&#xff08;六&#xff09;——主从同步、哨兵模式、集群 主从同步哨兵集群 主从同步 redis的主从同步&#xff0c;一般是一个主节点&#xff0c;加上多个从节点。只有主节点可以接收写命令&#xff0c;主节点接收到的写命令&#xff0c;会同步给从节点&#…

unblock with ‘mysqladmin flush-hosts‘ 解决方法

MySql Host is blocked because of many connection errors; unblock with mysqladmin flush-hosts 解决方法 环境:linux,mysql5.5.21 错误:Host is blocked because of many connection errors; unblock with mysqladmin flush-hosts 原因: 同一个ip在短时间内产生太多…

Java-SSM小区物业管理系统

Java-SSM小区物业管理系统 1.服务承诺&#xff1a; 包安装运行&#xff0c;如有需要欢迎联系&#xff08;VX:yuanchengruanjian&#xff09;。 2.项目所用框架: 前端:JSP、layui等。 后端:SSM,即Spring、SpringMvc、Mybatis等。 3.项目功能点: 1.业主功能: a.登录/退出登录 …

【投资学】作业

第20题 20.某一看涨期权和某一看跌期权的标的股票均为XYZ&#xff0c;两者的执行价格均为每股50美元&#xff0c;期限均为6个月。若投资者以4美元的价格购入看涨期权&#xff0c;当股票价格分别是40美元&#xff0c;45美元&#xff0c;50美元&#xff0c;55美元&#xff0c;60…

git 模拟队内协作

push 与 pull 命令需要登录。 凭据管理器都得是对应用户的。一台电脑上需要切换&#xff0c;删除再连接。 目录 一、前提条件二、流程三、命令如下四、注意事项&#xff08;先看这个&#xff09; 一、前提条件 项目主人仓库公开仓库里有一个文件&#xff0c;例如&#xff1a;h…

零代码编程:用kimichat批量重命名txt文本文件

一个文件夹中有很多个txt文本文件&#xff0c;需要全部进行重命名。 可以在kimichat中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个关于批量重命名txt文本文件的Python脚本&#xff0c;下面是具体步骤&#xff1a; D:\Best Seller Books 这个文件夹…

Java二阶知识点总结(七)SVN和Git

SVN 1、SVN和Git的区别 SVN是集中式的&#xff0c;也就是会有一个服务器保存所有代码&#xff0c;拉取代码的时候只能从这个服务器上拉取&#xff1b;Git是分布式的&#xff0c;也就是说每个人都保存有所有代码&#xff0c;如果要获取代码&#xff0c;可以从其他人手上获取SV…

快速上手:用二叉树实现高性能共享内存管理

文章目录 开篇常见的使用方案二叉树优化方案源码实现测试效果总结 开篇 之前看过一段时间Android property源码&#xff0c;发现其中对共享内存的使用方式挺优秀&#xff0c;对于实际的工作开发也有借鉴意义。于是乎参考其设计思想&#xff0c;个人用C也完成一篇共享内存的使用…

mysql80-DBA数据库学习1

掌握能力 核心技能 核心技能 mysql部署 官网地址www.mysql.com 或者www.oracle.com https://dev.mysql.com/downloads/repo/yum/ Install the RPM you downloaded for your system, for example: yum install mysql80-community-release-{platform}-{version-number}.noarch…