文章目录

  • 一、存储卷概念
  • 二、存储卷分类
    • 2.1 管理卷
    • 2.2 绑定数据卷
    • 2.3 临时数据卷
  • 三、MySQL灾难恢复
  • 四、存储卷的局限性

一、存储卷概念

什么是存储卷?
  Docker 存储卷 是 Docker 容器中用于持久化存储数据的独立文件系统区域。它独立于容器的联合文件系统,其生命周期可以完全独立于创建它的容器。简单来说,可以把它理解成容器中的一个共享文件夹或外部硬盘,这个文件夹直接映射到主机(或其它远程存储)上的一个真实目录。

为什么要使用存储卷?

  1. 容器销毁或误操作等会导致数据丢失,而存储卷就可以起到一个数据备份的作用。
  2. 宿主机和容器,容器和容器,它们之间文件系统是相互隔离的,要完成数据交互很麻烦,而存储卷起到一个交通枢纽的功能,或者说相当于一个“共享目录”。

二、存储卷分类

Docker 提供了三种方式将数据从宿主机挂载到容器中:
  管理卷(volume docker 。默认映射到宿主机的/var/lib/docker/volumes目录下,只需要在容器内指定容器的挂载点是什么,而被绑定宿主机下的那个目录,是由容器引擎 daemon自行创建一个空的目录,或者使用一个已经存在的目录,与存储卷建立存储关系,这种方式极大解脱用户在使用卷时的耦合关系,缺陷是用户无法指定那些使用目录,临时存储比较适合;
  绑定数据卷(bind mount。映射到宿主机指定路径下,在宿主机上的路径要人工的指定一个特定的路径,在容器中也需要指定一个特定的路径,两个已知的路径建立关联关系。
  临时数据卷(tmpfs mount.映射到于宿主机内存中,一旦容器停止运行,tmpfs mounts 会被移除,数据就会丢失,用于高性能的临时数据存储。

2.1 管理卷

创建卷
方法一:Volume命令操作

命令清单:

  • docker volume create:创建存储卷
  • docker volume inspect:显示存储卷详细信息
  • docker volume ls: 列出存储卷
  • docker volume prune:清理所有无用数据卷
  • docker volume rm:删除卷,使用中的无法删除

示例:在这里插入图片描述

  • 注:docker volume create不加卷名称,生成匿名存储卷
  • 注:docker volume inspect支持查看多个存储卷
  • 注:docker volume rmdocker volume prune-f选项表示强制删除

方法二:-v 或者–mount 指定
docker run创建并启动容器时添加-v--mount 都可以完成管理卷的创建和挂载
-v 选项
功能:完成目录映射
语法:

docker run -v name:directory[:options]

参数:

  • 第一个参数:卷名称
  • 第二个参数:卷映射到容器的目录
  • 第三个参数:选项,如 ro 表示 readonly

示例:
在这里插入图片描述
效果:
在这里插入图片描述

–mount选项

功能:完成目录映射
语法:

--mount '<key>=<value>,<key>=<value>'

关键参数:

  • type:类型表示 bind, volume, or tmpfs
  • source,src:对于命名卷,这是卷的名称。对于匿名卷,省略此字段
  • destination,dst,target:文件或目录挂载在容器中的路径
  • ro,readonly:只读方式挂载

示例:

docker run -d --name myweb2 --mount 'src=myweb2,dst=/usr/share/nginx/html' nginx:1.24.0

在这里插入图片描述
效果和-v选项相同

  • 注意1:添加ro选项限制的是容器里的写权限。
  • 注意2:容器删除卷的数据不会删除,除非用 docker volume rm 删除。因为卷本身就是来保护数据的。
  • 注意3:卷共享。不同容器可以使用同一个卷,解决了容器与容器之间数据交互繁琐的问题。

2.2 绑定数据卷

绑定卷 bind mount-v--mount 都可以完成绑定卷的创建
-v 选项
功能:完成卷映射
语法:

docker run -v name:directory[:options] ………

在这里插入图片描述

  • 注意1:-v选项下,如果宿主机没有对应的目录,会自动创建,而–mount则会挂载失败。
  • 注意2:与管理卷不同,容器目录原有数据会被清空,同步成宿主机目录下的数据。
  • 注意3:ro限制的是宿主机的写操作。

–mount选项
功能:完成目录映射
语法:

--mount '<key>=<value>,<key>=<value>'

关键参数:

  • type: 类型表示 bind, volume, or tmpfs
  • source, src: 宿主机目录,这个和管理卷是不一样的
  • destination, dst,target: 文件或目录挂载在容器中的路径
  • ro,readonly: 只读方式挂载

示例:

docker run -d --name=myweb3 --mount 
type=bind,src=/home/qsy/gitDocker/data/test2
,dst=/usr/share/nginx/html nginx:1.24.0

注意:在命令行中不能像这个把指令分行写(必须写在一行),这里只是方便展示。
效果同-v选项。

特性管理卷绑定卷
创建者Docker用户自己
存储位置Docker管理的区域用户指定的任何目录
控制权Docker用户
移植性
典型用途数据库数据、应用程序产生的需要持久化的数据配置文件、源代码、日志文件(在主机和容器间共享)
备份与迁移使用 docker volume 命令操作,相对简单需要操作主机文件系统,复杂度高

2.3 临时数据卷

临时卷 tmpfs临时卷数据位于内存中,在容器和宿主机之外(仅在容器运行期间存在)。

局限性

  • 不同于管理卷和绑定卷,不能在容器之间共享 tmpfs 挂载
  • 这个功能只有在 Linux 上运行 Docker 时才可用

创建卷
方法一:
–tmpfs选项
功能:完成临时卷映射
语法:

--tmpfs /app
  • 注意1:数据在宿主机内存里,/app是容器目录。如果该目录不存在则会创建。
  • 注意2:该容器的目录会被清空。
  • 注意3:当容器重启后,tmpfs目录会被销毁,或恢复成原来的样子。

示例:

docker run -d --name=myweb4 --tmpfs /test1 nginx:1.24.0

在这里插入图片描述

方法二:
--mount选项
功能:完成目录映射
语法:

--mount '<key>=<value>,<key>=<value>'

关键参数:

  • type:类型表示 bind, volume, or tmpfs
  • destination,dst,target:挂载在容器中的路径
  • tmpfs-sizetmpfs 挂载的大小(以字节为单位)。默认无限制。
  • tmpfs-modetmpfs 的八进制文件模式。例如,700 或 0770。默认为 1777 或全局可写。

示例:

docker run -d --name=myweb5 --mount type=tmpfs,dst=/usr/share/nginx/html nginx:1.24.1

三、MySQL灾难恢复

接下来我们演示把数据库容器数据丢失,然后通过存储卷恢复的过程,分为以下几步:

  1. 挂载存储卷
  2. 模拟数据生产
  3. 删除数据库容器
  4. 恢复数据
  5. 登录mysql并查看数据是否恢复

创建mysql容器并挂载:

docker run -d --name 容器的名字 -v 宿主机目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=数据库密码 mysql:版本号

在这里插入图片描述
模拟数据库存储:
在这里插入图片描述
删除mysql容器
在这里插入图片描述

恢复数据(数据都在宿主机目录下,再用同样的方式挂载就行)
在这里插入图片描述
登录数据库查看数据是否恢复:
在这里插入图片描述

四、存储卷的局限性

  1. 数据生命周期与容器分离:这既是一个优点,也是一个缺点。卷的生命周期独立于容器,即使删除了所有使用该卷的容器,卷及其数据仍然存在。它有效的保护了容器的数据,但很容易导致“孤儿卷”或“僵尸卷”堆积,占用大量磁盘空间,如果不手动清理,会造成资源浪费。
  2. 可移植性挑战:卷本身在创建时是“空白”的,其内容通常由容器在运行时填充。你不能像镜像一样,轻松地将一个包含数据的卷从一个环境(如开发机)直接“复制”或“迁移”到另一个环境(如生产服务器)。
  3. 备份和迁移流程复杂:备份一个正在被容器使用的活跃卷存在数据一致性的风险(例如,数据库文件可能在备份过程中被修改)。标准的 Docker 命令没有提供一键式的卷备份功能。
  4. 空间分配不灵活:Docker 卷默认使用宿主机的存储空间,你无法像在虚拟机中那样,轻松地为单个卷设置大小限制。一个失控的容器进程(例如,日志疯狂输出)可能会写满整个卷,进而占满宿主机的磁盘空间,导致宿主机和其他容器都出现问题。
  5. 安全性与访问控制:卷中的数据默认由容器的用户(通常是 root)拥有和写入。如果容器以特权模式运行或被攻破,攻击者可以通过卷对宿主机文件系统造成破坏(尽管比绑定挂载更安全)。

非常感谢您能耐心读完这篇文章。倘若您从中有所收获,还望多多支持呀!在这里插入图片描述

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

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

相关文章

Electron 原生模块集成:使用 N-API

引言&#xff1a;原生模块集成在 Electron 开发中的 N-API 核心作用与必要性 在 Electron 框架的扩展开发中&#xff0c;原生模块集成是提升应用性能和功能边界的关键技术&#xff0c;特别是使用 N-API&#xff08;Node-API&#xff09;编写和集成 C 原生模块&#xff0c;更是 …

android组包时会把从maven私服获取的包下载到本地吗

Android项目在构建&#xff08;组包&#xff09;时&#xff0c;Gradle会自动将从Maven私服&#xff08;或任何配置的仓库&#xff09;获取的依赖包&#xff08;AAR、JAR等&#xff09;下载到本地的Gradle缓存目录中。 下面详细解释这个过程和相关的概念&#xff1a; 详细过程声…

【应用笔记】构建具有增强识别、防欺骗和说话人识别功能的高级语音用户界面--瑞萨电子

Suad Jusuf&#xff08;Director Product Marketing and Strategy, Renesas AI Center of Excellence&#xff09;&#xff1a;语音用户界面&#xff08;VUI&#xff09;正在彻底改变我们与技术交互的方式&#xff0c;实现免提、无缝的通信。通过整合先进语音命令识别功能&…

DAY 26 函数专题1:函数定义与参数-2025.9.13

DAY 26 函数专题1&#xff1a;函数定义与参数 知识点回顾&#xff1a; 函数的定义变量作用域&#xff1a;局部变量和全局变量函数的参数类型&#xff1a;位置参数、默认参数、不定参数传递参数的手段&#xff1a;关键词参数传递参数的顺序&#xff1a;同时出现三种参数类型时…

芯昇XS9922C可替代TP9932和TP9930:国产四核高清解码芯片,开启车载视觉处理新纪元 ——从像素级解析到全链路集成,重新定义智能驾驶感知核心

引言&#xff1a;车载视觉的“芯”革命 在智能驾驶技术飞速演进的今天&#xff0c;高清视频采集与实时处理已成为车辆环境感知的“神经中枢”。传统解码方案面临传输距离有限、多芯片集成度低、音视频同步难等痛点&#xff0c;制约着车载环视、盲区检测等关键功能的性能突破。X…

百度竞价推广:百度搜索竞价推广代运营

在数字化营销浪潮中&#xff0c;百度竞价推广凭借其强大的流量优势和精准触达能力&#xff0c;成为企业获取客户的核心渠道之一。然而&#xff0c;面对复杂的账户管理、激烈的关键词竞争以及动态变化的市场环境&#xff0c;许多企业选择将专业的事交给专业的人——通过代运营团…

开源端到端训练多模态大模型LLaVA 深度拆解

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》&#xff08;跟我一起学人工智能&#xff09;【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷…

排序算法(Java)

目录 前言 常见的排序算法实现&#xff1a; 1. 冒泡排序 思路分析&#xff1a; 代码实现&#xff1a; 2.选择排序 思路分析&#xff1a; 代码实现&#xff1a; 3.插入排序 思路分析&#xff1a; 代码实现&#xff1a; 4.快速排序 思路分析&#xff1a; 代码实现&…

深度学习打卡第N6周:中文文本分类-Pytorch实现

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、准备工作 数据格式&#xff1a; import torch from torch import nn import torchvision from torchvision import transforms,datasets import os,PIL,p…

【代码随想录day 24】 力扣 90. 集合II

视频讲解&#xff1a;https://www.bilibili.com/video/BV1vm4y1F71J/?vd_sourcea935eaede74a204ec74fd041b917810c 文档讲解&#xff1a;https://programmercarl.com/0090.%E5%AD%90%E9%9B%86II.html#%E6%80%9D%E8%B7%AF 力扣题目&#xff1a;https://leetcode.cn/problems/su…

.NET 6 文件下载

.NET 6 API中实现文件的下载。创建HttpHeaderConstant用于指定http头。public sealed class HttpHeaderConstant{public const string RESPONSE_HEADER_CONTENTTYPE_STREAM "application/octet-stream";public const string RESPONSE_HEADER_NAME_FILENAME "f…

[数据结构——lesson6.栈]

目录 引言 1.栈的概念和结构 栈的核心概念 栈的结构 2.栈的实现 2.1栈的实现方式 2.2栈的功能 2.3栈的声明 1.顺序栈 2。链式栈 2.4栈的功能实现 1.栈的初始化 2.判断栈是否为空 3.返回栈顶元素 4.返回栈的大小 5.元素入栈 6.元素出栈 7.打印栈的元素 8.销毁…

华为HICE云计算的含金量高吗?

在数字时代的今天&#xff0c;云计算技术证飞速的发展成为企业数字化转型的重要支撑。而华为作为领先的通信和信息技术公司&#xff0c;推出的HCIE云计算认证备受关注。接下来就来说说华为HCIE云计算认证的含金量到底有多高。HCIE认证被认为是华为认证中的最高等级&#xff0c;…

OSPF协议原理讲解和实际配置(华为/思科)

OSPF&#xff08;open shorest path first&#xff0c;开放最短路径优先&#xff09;是一种动态的&#xff0c;基于链路状态的动态路由协议&#xff0c;广泛的应用在企业网络中&#xff0c;通过维护网络拓扑信息&#xff0c;利用 Dijkstra 算法实现最短路径&#xff0c;实现高效…

【开题答辩全过程】以 《黄帝内经》问答系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚

这个错误是由于 PowerShell 的执行策略限制&#xff0c;导致无法运行脚本。你可以通过以下步骤解决这个问题&#xff1a; 1. 查看当前的执行策略 打开 PowerShell&#xff0c;以管理员身份运行&#xff0c;输入以下命令查看当前的执行策略&#xff1a; Get-ExecutionPolicy如果…

macOS苹果电脑运行向日葵远程控制软件闪退

文章目录问题原因分析修复附录向日葵字太小按Ctrl键会弹出开始菜单的问题问题 向日葵是一款远程控制的应用&#xff0c;在macOS下也能运行&#xff0c; 本来用的好好的&#xff0c;有一天升级后突然就运行不起来了&#xff0c;一点开能显示几秒首界面&#xff0c;立马就自动退…

Linux dma-buf 框架原理、实现与应用详解

1. 背景与意义 1.1 异构系统与缓冲区共享的挑战 在现代 SoC、嵌入式、图形和多媒体系统中&#xff0c;CPU、GPU、VPU、ISP、DMA 控制器等多个硬件单元需要高效地共享和传递大块数据&#xff08;如图像帧、视频流、AI 张量等&#xff09;。如果每个设备都维护独立的缓冲区&…

Scikit-learn Python机器学习 - 分类算法 - 朴素贝叶斯

锋哥原创的Scikit-learn Python机器学习视频教程&#xff1a; https://www.bilibili.com/video/BV11reUzEEPH 课程介绍 ​ 本课程主要讲解基于Scikit-learn的Python机器学习知识&#xff0c;包括机器学习概述&#xff0c;特征工程(数据集&#xff0c;特征抽取&#xff0c;特…

如何免费股票数据API(第13期):沪深A股《最新分时交易》数据获取大全:附Python、Java等多语言实战教程与接口文档说明

在金融科技迅猛发展的今天&#xff0c;股票量化分析以其严谨的科学性和强大的系统性&#xff0c;正日益成为投资领域的主流方法论。任何卓越的量化模型的诞生&#xff0c;都离不开全面、精准、及时的数据支撑。无论是跃动着的实时交易数据、沉淀了历史规律的K线走势&#xff0c…