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深拷贝和浅拷贝 前言 …

新定义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…

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

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

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

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

css左右滚动互不影响

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

【设计模式深度剖析】【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;正向代理、反向代理 --隧道开通免费的 --协议…

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

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

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

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

Sentinel限流

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

VSCODE gcc运行多个.c文件

一、简介 很多时候&#xff0c;开发者需要使用VSCODE进行C语言算法验证。而VSCODE的gcc编译&#xff0c;默认是只编译本文件的内容&#xff0c;其他.c文件是不参与编译的。这就给开发者带来很大的困扰&#xff0c;因为开发者不可能把所有的算法都写在一个.c文件&#xff0c;特别…

如何异地组网添加摄像机?

本文将介绍如何使用天联技术实现异地组网添加摄像机&#xff0c;并保障数据的安全性。 安防摄像机的应用愈发广泛&#xff0c;无论是家庭安防还是企业监控&#xff0c;摄像机都扮演着重要角色。在一些特殊场合或者特殊需求下&#xff0c;我们需要将摄像机添加到异地网络中进行监…

P2. 配置MySQL和用户注册登录模块

P2. 配置MySQL和用户注册登录模块 0 概述Tips1 预备知识1.1 SpringBoot 常用模块1.2 pojo层的实现1.3 mapper层的实现1.4 controller层调试CRUD 2 Spring Security2.1 Spring Security 介绍2.2 Spring Security 对接数据库2.3 密码的加密 3 Jwt验证3.1 传统Session验证方式3.2 …

Monocular Model-Based 3D Tracking of Rigid Objects:2005年综述

1 Introduction 在视频序列中跟踪一个物体意味着在物体或摄像机移动时&#xff0c;持续识别其位置。根据物体类型、物体和摄像机的自由度以及目标应用的不同&#xff0c;有多种方法可供选择。二维跟踪通常旨在跟踪物体或物体部分的图像投影&#xff0c;这些物体的三维位移会导…

如何应对EI会议中的突发情况?

在参加EI会议时&#xff0c;难免会遇到一些突发情况&#xff0c;以下是几种常见的突发情况及应对策略&#xff1a; 突发情况及应对策略 1. 技术故障 投影设备故障&#xff1a;提前将演示文稿上传到会议主办方指定的平台&#xff0c;或带上多个版本&#xff08;如USB驱动器和云…

TCP通信流程

TCP通信流程 TCP和UDP的区别 TCP&#xff08;传输控制协议&#xff09; 面向连接的&#xff1a;在数据传输之前&#xff0c;TCP 需要三次握手来建立连接。可靠的传输&#xff1a;通过序列号、确认响应、重传机制、流量控制和拥塞控制来保证数据正确传输。基于字节流&#xf…

Docker访问文件权限受限问题解决

问题描述 运行项目的docker环境&#xff0c;新添加了一个数据集&#xff0c;但是数据集的访问权限受限&#xff08;Permission dinied&#xff09;&#xff0c;运行的命令如图所示 问题解决 chmod 777 xxx YYDS&#xff01;&#xff01;&#xff01;但是单纯直接运行会因为权限…