Docker-数据卷的挂载

文章目录

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

数据卷概念

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

数据卷实现机制

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

数据卷特性

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

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

数据卷操作

数据卷挂载通用命令

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

sudo docker run -di -v /docker/mysql/data:/usr/local/data --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d mysqlsudo 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提供的数据卷挂载方式很多,可以通过具名挂载,匿名挂载或者数据卷继承方式等,同样可以指定容器目录的可读可写权限,若只可读即只能通过宿主机进行数据管理

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

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

相关文章

Java(十)---抽象类和接口

文章目录 前言知识回顾1.抽象类1.1.抽象类语法1.2 抽象类特性 2.接口2.1.接口的概念2.2 语法规则2.3 接口使用2.4 接口特性2.5 实现多个接口 3.Object类3.1 获取对象信息3.2.对象比较equals方法 4.接口使用实例4.1.Comparable4.2.Comparator4.3.Cloneable深拷贝和浅拷贝 前言 …

Flutter 中的 Scaffold 小部件:全面指南

Flutter 中的 Scaffold 小部件:全面指南 在 Flutter 中,Scaffold 是一个非常重要的 widget,它为 Material Design 中的布局提供了一个基础的结构。Scaffold 通常作为应用的主要布局容器,提供了管理应用栏(AppBar&…

新定义RD8T36P48点亮LED--汇编

其实汇编和C语言差不多,简单的东西用汇编挺好,中等及以上复杂度的程序还是C语言更灵活 直接在keil新建好工程,选好芯片型号和下载方式,再创建一个.asm文件并添加到工程, 工程创建完如图 工程配置 代码 ORG 0000HL…

两数交换,数组查找奇数个数的数(位运算)

文章目录 一、异或运算:1.1 Demo1.2 面试题 一、异或运算: 1.1 Demo 0和N进行异或运算都等于N 任何一个数和自己异或运算都等于0 且异或运算满足交换率 a^b b^a eg: a 甲 , b 已 那么则有 a a^b ​ b a^b ​ a a^b 故有&am…

如何理解数字孪生?数字孪生三维可视化有什么关系?

随着科技的飞速发展和数字化转型的浪潮,数字孪生技术逐渐崭露头角,并在多个领域展现出巨大的潜力。而在这股技术革新的潮流中,数字孪生三维可视化以其直观、精确和动态的特点,成为了推动数字化转型的重要部分。 一、数字孪生的魅…

正则项学习笔记

目录 1. L2 正则化 岭回归 1.1 L2 norm计算例子 2. L1 正则化 3. 弹性网正则化 4. Dropout 1. L2 正则化 岭回归 在 PyTorch 中,L2 正则化通常通过设置优化器的 weight_decay 参数实现。以下是一个简单的例子: 介绍博文: 正则化(1)&a…

Java数据结构与算法(翻转二叉树)

前言 翻转二叉树的规则: 1.将二叉树所有节点以根节点为中心进行左右交换。 实现原理 递归实现:采用后续遍历的方式交换节点。同样也可以采用前序递归的方式,必须按分层替换。所以不可以用中序递归方式。 1.递归退出条件:节点的值为空,返回null。 2…

八国多语言微盘微交易所系统源码 单控点控 K线完好

安装环境linux NGMySQL5.6PHP7.2(函数全删)pm2管理器(node版本选择v12.20.0) config/ database.php 修改数据库链接 设置运行目录 public 伪静态thinkphp

C语言----深入理解指针(1)

1.内存地址 内存单元的编号 地址 指针 cpu访问内存中的某个字节空间,必须知道这个字节空间在内存的什么位置,而因为内存中字节很多,所以需要给内存进行编址 /int main() //{ // int a 20;//创建变量的本质其实是在内存中申请空间 //…

css左右滚动互不影响

想实现左右都可以滚动,且互不影响。 只需要再左边的css里面 .threedlist {cursor: pointer;width: 280px;position: fixed;height: 100vh; /* 定义父容器高度 */overflow-y: auto; /* 只有在内容超过父容器高度时才出现滚动条 */} 如果想取消滚动条样式 .threedli…

PHP深度探索:从基础到实战,打造高效Web应用

PHP深度探索:从基础到实战,打造高效Web应用 PHP基础概念与环境搭建PHP简介环境搭建 PHP基础语法输出与变量控制结构条件判断循环 函数与数组 实战案例:简易博客系统数据库连接文章发布功能表单提交提交处理 安全性与性能优化安全实践性能优化…

【设计模式深度剖析】【4】【创建型】【建造者模式】| 类比选购汽车的过程,加深理解

👈️上一篇:抽象工厂模式 | 下一篇:原型模式👉️ 目录 建造者模式概览定义英文原话直译如何理解呢?建造者模式将对象的建造过程给抽象出来了类比选购汽车 4个角色UML类图1. 抽象建造者(Builder)角色2. 具体建造者…

【Docker实操】启动redis服务

一、步骤 1、获取redis镜像 执行获取redis镜像命令&#xff1a;docker pull redis。打印镜像清单&#xff0c;可以看到新拉到的redis镜像。 2、创建redis.conf配置文件 linux主机 mkdir -p /root/www/redis/conf touch /root/www/redis/conf/redis.conf cat << EOF &…

三维焊接平台在新一代机器人生产中得到广泛应用-河北北重

随着智能制造行业的不断推进&#xff0c;三维焊接平台在工业机器人领域应用现象普遍。三维焊接平台、三维柔性焊接平台工装夹具也会在新一代机器人——智能机器人在工业生产中得到广泛应用。目前&#xff0c;三维焊接平台、焊接铸铁平台在工业机器人的主要作用是应用于弧焊、电…

内网穿透--Ngrok-入门-上线

免责声明:本文仅做技术交流与学习... 目录 Ngrok: 技术实现: 前提: 命令: 详细流程及图解: 平台Ngrok: Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器 支持的协议&#xff1a;tcp、http、https 支持的类型&#xff1a;正向代理、反向代理 --隧道开通免费的 --协议…

Flink集群搭建简介

一、下载与解压 前往Flink官方网站&#xff08;https://flink.apache.org/zh/downloads.html&#xff09;下载适合你环境的Flink版本。注意&#xff0c;你需要选择与你的Scala版本相匹配的Flink版本。将下载的安装包&#xff08;通常是.tgz格式&#xff09;传输到你的主节点&a…

第三代“图即代码”低代码平台设计

低代码平台现在市面上的产品大致分为两类&#xff0c;一种是“ 搭积木”类型的 这种类型的主要是一些行业定制的saas产品&#xff0c;是在已经成型或者是平台提供的垄断性资源上来做二次“搭建”这种平台优势在于能快速上手&#xff0c;有难度的都进行了“简化”和“特定场景”…

经纬恒润第三代重载自动驾驶平板车

随着无人驾驶在封闭场地和干线道路场景的加速落地&#xff0c;港口作为无人化运营的先行者&#xff0c;其场景的复杂度、特殊性对无人化运营的技术提出了各种挑战。经纬恒润作为无人驾驶解决方案提供商&#xff0c;见证了港口在无人化运营方面的尝试及发展&#xff0c;并深度参…

html中嵌入js的2种方法 引用 引入javascript

方法1&#xff1a;引入js脚本块 页面中引入<script>标签&#xff0c;标签范围里写js代码。 <script type"text/javascript">//脚本代码function f1(){...} </script>方法2&#xff1a;引入js文件 <script type"text/javascript" s…

Sentinel限流

目录 Sentinel规则持久化Sentinel与Spring Cloud Gateway整合自定义扩展部分遇到的问题解决方案 控制面板改造新增读取规则代码重写SpringCloudGatewayApiDefinitionChangeObserver类&#xff0c;注意&#xff1a;类路径要完全一致新增自定义规则读取类lua脚本&#xff08;这里…