Docker-数据卷的挂载

文章目录

  • 数据卷概念
  • 数据卷实现机制
  • 数据卷特性
  • 数据卷操作
    • 数据卷挂载通用命令
    • 匿名挂载
    • 具名挂载
    • 数据卷继承
    • 容器数据卷只读
    • 容器数据卷读写-默认
  • 总结

数据卷概念

为了很好的实现数据保存数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷

数据卷实现机制

创建容器时,将宿主机的目录与容器内的目录进行映射,可以通过修改宿主机的某个目录从而去影响容器,而且这个操作是双向绑定,容器内的操作也会影响到宿主机,实现备份功能。但是容器被删除的时候,宿主机的内容并不会被删除,因为底层是通过拷贝实现的。如果多个容器挂载的是同一个目录,其中一个容器被删除,其他容器内的数据不会受到影响,同理,底层也是拷贝实现的

数据卷特性

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的修改会立马生效
  • 对数据卷的更新,不会影响镜像
  • 数据卷默认会一直存在,即使容器被删除

容器和宿主机之间的数据卷属于引用关系,数据卷是从外界挂载到容器内部的,所以可以脱离容器的生命周期而独立存在,正式由于数据卷的生命周期并不等同于容器的生命周期,在容器退出或者删除以后,数据卷依然不会受到影响,数据卷的生命周期一直持续到没有容器使用它为止

数据卷操作

数据卷挂载通用命令

创建容器时添加-v参数,格式为宿主机:容器目录,例如

sudo docker run -di -v /docker/mysql/data:/usr/local/data --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d mysql

sudo docker run -di -v /docker/mysql/data:/usr/local/data --name mysql02 -e MYSQL_ROOT_PASSWORD=root -d mysql

宿主机在/docker/mysql/data下新增test.txt文件
在这里插入图片描述
登陆进入mysql01容器内在/usr/local/data下发现test.txt文件
在这里插入图片描述
登陆进入mysql02容器内在/usr/local/data下发现test.txt文件
在这里插入图片描述
当我退出,停止,删除容器mysql02时,宿主机上test.txt文件依旧存在
在这里插入图片描述
重新启动容器mysql02,在容器mysql02上删除test.txt,宿主机和容器mysql01的test.txt文件也都不存在了

匿名挂载

匿名挂在只需要写容器目录即可,宿主机对应的目录会在/var/lib/docker/volumes中生成
格式为-v 容器目录,例如

docker run -di -v /usr/local/data --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d mysql

启动容器后,通过docker inspect mysql01 知道当前容器数据卷的挂载情况
在这里插入图片描述
若你使用的是mac系统,它找不到卷目录,可以执行
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
然后直接可以转入到var/lib/docker/volumes目录下操作文件即可

具名挂载

具名挂载就是给数据卷起了个名字,容器外对应的目录会在var/lib/docer/volumes中生成
格式为-v 卷名称:容器目录,例如:

docker run -di --privileged=true -v docker_mysql_data:/usr/local/data --name mysql03 -e MYSQL_ROOT_PASSWORD=root -d mysql

执行docker volume ls 查看volume数据卷信息,其中docker_mysql_data就是卷名称,其它卷名称都是默认生成的ID号
在这里插入图片描述
通过docker volume inspect 数据卷名称可以查看该数据卷对应宿主机的目录地址

docker volume inspect docker_mysql_data

在这里插入图片描述

数据卷继承

若多个容器使用的是相同的数据卷挂载地址,那后续的容器启动时可以选择继承容器的数据卷挂载。使用--volumes-from 数据卷容器数据卷容器可以是容器的名称,
优势:如果需要创建大量的相同目录映射关系,可以简化命令便于操作和记忆
例如:
先启动mysql01容器,使用-v指定数据卷的挂载

docker run -di -v /Users/apple/docker/mysql/data:/usr/local/data --name mysql02 -e MYSQL_ROOT_PASSWORD=root -d mysql

执行docker inspect mysql01查看数据卷挂载
在这里插入图片描述
容器mysql02和mysql03使用都是同一个数据卷挂载,可以在启动容器时使用--volumes-from 数据卷容器指定使用mysql01的数据卷容器,例如

docker run -di --volumes-from mysql01 --name mysql02 -e MYSQL_ROOT_PASSWORD=root -d mysql

指定docker inspect mysql02查看数据卷挂载
在这里插入图片描述

容器数据卷只读

只能通过修改宿主机内容实现对容器的数据管理,执行docker run -it -v /宿主机目录:/容器目录:ro 镜像名 。例如 :

docker run -di -v /Users/apple/docker/mysql/data:/usr/local/data:ro --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d mysql

在这里插入图片描述

容器数据卷读写-默认

宿主机和容器双向操作数据,执行docker run -it -v /宿主机目录:/容器目录:rw 镜像名 或者docker run -it -v /宿主机目录:/容器目录 镜像名
例如 :

docker run -di -v /Users/apple/docker/mysql/data:/usr/local/data:rw --name mysql02 -e MYSQL_ROOT_PASSWORD=root -d mysql

总结

数据卷是Docker容器提出来概念,目的是用来持久化容器的数据,存在于宿主机上,独立于容器的生命周期,不会在容器删除后删除数据。Docker提供的数据卷挂载方式很多,可以通过具名挂载,匿名挂载或者数据卷继承方式等,同样可以指定容器目录的可读可写权限,若只可读即只能通过宿主机进行数据管理

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【手写大跟堆详解】

文章目录 大跟堆介绍大跟堆的结构大跟堆的应用场景大跟堆的代码实现 大跟堆介绍 大根堆(Max Heap)是一种特殊的二叉树结构,它满足以下两个条件: 1.完全二叉树:大根堆是一棵完全二叉树,即除了最后一层外&am…

ORACLE 资源管理参数与等待事件resmgr:cpu quantum

RESOURCE_MANAGER_PLAN 先来看下参数的含义 官网链接:RESOURCE_MANAGER_PLAN (oracle.com) 意思翻译过来这个参数用于资源计划。后边的看完也不是很明白具体的作用 于是参考了以下文章 Oracle 参数 RESOURCE_MANAGER_PLAN 官方解释,作用,…

Kubernetes——Pod详解

目录 一、Pod基础概念 1.概念 2.使用方式 3.Pause容器 3.1网络 3.2存储 4.Pod容器分类 4.1自主式Pod 4.2控制器管理的Pod 二、Pod的分类 1.基础容器(infrastructure container) 2.初始化容器(initcontainers) 2.1Ini…

前端vue用el-table如何实现表头内容过长换行处理,实现换行效果

前端vue用el-table如何实现表头内容过长换行处理,实现换行效果 这是效果图 有两种方法,一种简易版本,一种万能方法,都是el-table,先看文档 表头标题是可以自定义的 方法一 label的解释写在代码里面了,这里会自动形成换…

Edge浏览器“此页存在问题”解决思路

Edge浏览器显示“此页存在问题”解决思路 大家平时使用Edge浏览器时,是否和我一样会突然出现“此页存在问题”的情况? 经过百度查询后我找了一种情况和解决办法,能够大大减少这类问题的出现。出现“此页存在问题”可能是因为之前使用过软件…

C++相关概念和易错语法(13)(string的模拟实现)

string由于存在字符串和单字符的概念,使得它的一些接口,实现要比vector多一些。本质上来看string的实现是在顺序表的基础上加入串相关的操作。下面我会分享如何模拟实现string,这可以进一步提高我们对string的熟练程度。 1.构造函数、拷贝构…

Mysql与Navicat可视化命令大全 ----项目实战

软件准备:✍Mysql8.0下载地址(推荐)✍Navicat 16 下载地址(推荐) 注:不会安装看主页,关注我,免费指导,接计算机毕设☑ -----------------------------------------------…

交换机连接方式

一、级联方式 级联是将多个交换机或其他网络设备依次连接,形成一个层次结构,从而扩展网络的覆盖范围和端口数量。 在级联连接中,数据信号会从一个设备依次传递到下一个设备。每个设备都会接收并处理来自上级设备的数据,并将其转…

【MySQL精通之路】MySQL8.0新增功能-原子DDL语句支持

太长不看系列: 本文一句话总结,MySQL8.0支持多条DDL语句执行时的原子性了(仅限Innodb) 本文属于下面这篇博客的子博客: 【MySQL精通之路】MySQL8.0官方文档-新增功能 1.意义描述 MySQL 8.0支持原子数据定义语言&…

设置我们JavaScript设置的开发环境

你想设置一个用于编写Java脚本的开发环境,对吧?我们会在接下来的笔记中写一些JavaScript代码,所以我们需要一个开发环境。那么我们需要选择哪种开发环境呢? 通常情况下,对于像Java或C#这样的语言,你需要进行一些安装,对吧?你需要下载Java或某个运行时环境,并设置好路…

uniapp集成websocket不断线的处理-打牌记账

背景 近期在开发打牌记账微信小程序时,我们将房间这个业务场景做成了类似聊天室功能。 对房间内发生的动作,都能实时对其他人可见。 如:转账,离开,加入,结算等动作 其他人员都能实时接收到推送消息, 这个时…

Android模块化项目搭建和模块之间跳转传值(1)

一、背景 近段时间 由于工作没有这么繁忙,于是总结了一下项目中的模块化处理,并且这也是在众多面试中会问到的问题,希望能够帮助到在学习或者了解模块化的同学。 二、项目搭建 1、其实模块化就是将众多功能模块分成一个一个的模块进行开发…

<项目> 云备份

目录 一、简单认识 二、实现目标 三、服务端程序负责功能及功能模块划分 四、客户端程序负责功能及功能模块划分 五、环境搭建 (一)gcc 7.3 (二)安装jsoncpp库 (三)下载bundle数据压缩库 &#xf…

聊聊 JSON Web Token (JWT) 和 jwcrypto 的使用

哈喽大家好,我是咸鱼。 最近写的一个 Python 项目用到了 jwcrypto 这个库,这个库是专门用来处理 JWT 的,JWT 全称是 JSON Web Token ,JSON 格式的 Token。 今天就来简单入门一下 JWT。 官方介绍:https://jwt.io/intr…

添加、修改和删除列表元素

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 添加、修改和删除列表元素也称为更新列表。在实际开发时,经常需要对列表进行更新。下面我们介绍如何实现列表元素的添加、修改和删除。 …

vs无法打开或包括文件”QTxxx“

vs创建项目时默认引入core、gui、和widgets等模块,在需要网络通讯或者图表等开发时需要添加相应模块。 点击扩展 -> QT VS Tools -> QT Project Setting->Qt Modules,添加相应模块即可

【Jenkins】Centos7安装Jenkins(环境:JDK11,tomcat9,maven3.8)

目录 Jenkins部署环境Maven安装1.上传安装包2.解压3.配置Maven环境变量4.使配置文件立即生效5.校验Maven安装6.Maven配置阿里云仓库7.Maven配置依赖下载位置 Git安装安装监测安装 JDK17安装1.查看旧版本JDK2.卸载旧版本JDK3.查看是否卸载干净4.创建java目录5.下载JDK11安装包6.…

kettle从入门到精通 第六十二课 ETL之kettle job中发送邮件(带多个附件),闭坑指南

1、今天群里一个朋友加我微信遇到问下向我求助。一顿测试下来发现原来是使用kettle姿势不对,对kettle没有完全驾驭导致的,今天和大家一起分享下这个问题。 2、先自我膨胀下,自从写kettle系列文章之后认识了很多朋友,同时文章也帮助…

设计模式6——单例模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 单例模式(Singleto…

1-4月我国5G用户、流量占比均过半,呈现平稳增长态势!

1-4月份,通信行业整体运行平稳。电信业务量收平稳增长;5G、千兆光网等新型基础设施建设持续推进,网络连接用户规模不断扩大,移动互联网接入流量较快增长。 一、总体运行情况 电信业务收入稳步增长,电信业务总量增速保持…