Docker 使用基础(4)—存储卷

 

                                         🎬慕斯主页修仙—别有洞天

                                       ♈️今日夜电波:秒針を噛む—ずっと真夜中でいいのに。

                                                           0:34━━━━━━️💟──────── 4:20
                                                                🔄   ◀️   ⏸   ▶️    ☰  

                                 💗关注👍点赞🙌收藏您的每一次鼓励都是对我莫大的支持😍


 目录

首先理解几个概念

Docker存储卷(Volume)是什么?

Docker卷的分类?

管理卷(Volumes)

管理卷的创建方式一:docker volume create

docker volume inspect

docker volume ls

docker volume rm

docker volume prune

管理卷的创建方式二:使用run的 -v 或者 --mount 指定创建管理卷

管理卷的创建方式三:Dockerfile 匿名卷

Docker 卷生命周期

Docker 卷共享

绑定卷(bind mount)

-v 参数创建卷

--mount 参数创建绑定卷

临时卷

--tmpfs 创建

--mount 指定参数创建

临时卷的作用


首先理解几个概念

Docker存储卷(Volume)是什么?

        存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这就意味着,当我们在容器中的这个目录下写入数据时,容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录。

        在宿主机上的这个与容器形成绑定关系的目录被称作存储卷。卷的本质是文件或者目录,它可以绕过默认的联合文件系统,直接以文件或目录的形式存在于宿主机上。

        宿主机的/data/web 目录与容器中的/container/data/web 目录绑定关系,然后容器中的进程向这个目录中写数据时,是直接写在宿主机的目录上的,绕过容器文件系统与宿主机的文件系统建立关联关系,使得可以在宿主机和容器内共享数据库内容,让容器直接访问宿主机中的内容,也可以宿主机向容器写入内容, 容器和宿主机的数据读写是同步的。大致图示如下:

        存储卷大致在Docker架构中位于Docker daemon模块中,不仅如此,Network、Compose也位于这个模块中。再来回顾一下这个架构:

Docker卷的分类?

        Docker提供了三种主要的方式来将数据从宿主机挂载到容器中,以便实现数据的持久化、共享和高效管理。这三种方式分别是:

Volumes(卷):

Volumes是由Docker管理的存储卷,它们位于宿主机文件系统的一个特定路径下,默认路径是/var/lib/docker/volumes/。Volumes提供了数据的持久化存储,即使容器被删除,数据也得以保留。此外,Volumes可以被多个容器共享,且它们独立于容器的生命周期。使用docker volume create命令可以创建新的卷,而docker run命令中的--mount或-v选项可以将卷挂载到容器中。

Bind Mounts(绑定挂载):

Bind mounts允许将宿主机上的任意目录或文件挂载到容器内。与Volumes不同,bind mounts可以挂载宿主机文件系统的任何位置,这意味着非Docker进程也可以访问和修改这些文件或目录。这增加了灵活性但也带来了潜在的安全风险。使用docker run命令的-v选项可以指定一个bind mount,例如-v /path/on/host:/path/in/container。

Tmpfs Mounts(内存挂载):

Tmpfs mounts是一种特殊的挂载类型,它们只存在于宿主机的内存中,不会写入到宿主机的文件系统。这意味着当容器停止时,挂载在tmpfs中的任何数据都会丢失,不会持久化。Tmpfs mounts适用于那些不需要持久存储且希望提高性能的场景,因为它们减少了磁盘I/O。使用docker run命令的--tmpfs选项可以创建一个tmpfs挂载。

管理卷(Volumes)

管理卷的创建方式一:docker volume create

用途: 创建一个新的Docker卷。
语法:

docker volume create [OPTIONS] [VOLUME]

关键参数:

  • --driver-d: 指定创建卷时所用的驱动程序,如 local, nfs, azurefile 等。
  • --label: 设置卷的元数据标签。
  • --name: 显式指定卷的名称。
  • --opt-o: 设置驱动程序特定的选项,如存储大小限制等。

示例:

docker volume create --name=my-vol

docker volume inspect

用途: 显示一个或多个卷的详细信息。
语法:

docker volume inspect [OPTIONS] VOLUME [VOLUME...]

关键参数:

  • --format -f: 使用给定的 Go 模板格式化输出。

示例:

docker volume inspect my-vol

docker volume ls

用途: 列出所有的Docker卷。
语法:

docker volume ls [OPTIONS]

关键参数:

  • --filter,-f : 根据提供的条件过滤输出,如 label=production
  • --format :指定相应个格式,如 json,table。
  • -q: 仅显示名称

示例:

docker volume ls

docker volume rm

用途: 删除一个或多个卷。
语法:

docker volume rm [OPTIONS] VOLUME [VOLUME...]

关键参数:

  • -f,--force:强制删除

示例:

docker volume rm my-vol

docker volume prune

用途: 删除所有未被容器使用的卷(悬空卷)。
语法:

docker volume prune [OPTIONS]

关键参数:

  • --all-a: 删除所有卷,包括正在被容器使用的卷。
  • --force-f: 不提示确认,直接删除。

示例:

docker volume prune


管理卷的创建方式二:使用run的 -v 或者 --mount 指定创建管理卷

-v 参数

• 功能:完成目录映射

• 语法

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

• 参数

○ 第一个参数:卷名称

○ 第二个参数:卷映射到容器的目录

○ 第三个参数:选项,如 ro 表示 readonly


--mount 参数

• 功能:完成目录映射

• 语法

docker run --mount '<key>=<value>,<key>=<value>' .........

• 参数

○ type : 类型表示 bind, volume, or tmpfs

○ source , src :对于命名卷,这是卷的名称。对于匿名卷,省略此字段。

○ destination, dst,target:文件或目录挂载在容器中的路径

○ ro,readonly: 只读方式挂载

管理卷的创建方式三:Dockerfile 匿名卷

        我们也可以通过 dockerfile 的 VOLUME 指令在镜像中创建 Data Volume,这样只要通过该镜像创建的容器都会存在挂载点,但值得注意的是通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,而是由 docker 随机生成的

Docker 卷生命周期

        当我们创建了管理卷并启动启动容器后,如果我们将运行着的容器给删除,我们的管理卷并不会直接跟着被删除,而是只有在自己使用docker volume rm 指令后才会被删除。

 

Docker 卷共享

        当多个容器挂载相同名字的管理卷或者宿主机相同位置的卷时,他们会共享同一个卷,如果卷的内容被修改则所有的容器中改卷对应数据的数据也会被修改。

例如如下两个容器都是挂载了同一个卷:

docker run -v my-volume:/data container1
docker run -v my-volume:/data container2

绑定卷(bind 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: 只读方式挂载

临时卷

        临时卷数据位于内存中,在容器和宿主机之外。 tmpfs 局限性:不同于卷和绑定挂载,不能在容器之间共享 tmpfs 挂载。这个功能只有在 Linux 上运行 Docker 时才可用。需要注意的是:如果我们让临时卷挂载到已经存在的目录里将会以临时卷为主,如果放入比设置了大小的临时卷还大的文件将会报错,显示空间不足!

--tmpfs 创建

• 功能:

完成临时卷映射

• 语法

--tmpfs /app

--mount 指定参数创建

• 功能:

完成目录映射

• 语法

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

• 关键参数

○ type : 类型表示 bind, volume, or tmpfs

○ destination, dst,target:挂载在容器中的路径

○ tmpfs-size: tmpfs 挂载的大小(以字节为单位)。默认无限制。

○ tmpfs-mode: tmpfs 的八进制文件模式。例如, 700 或 0770。默认为 1777或全局可写。

临时卷的作用

        在看完上面的示例后你可能觉得临时卷没什么作用,实际上临时卷是可以提高我们的文件安全性的,普通的容器上的文件其实是可以在我们宿主机上搜索到的如:find -name命令,但是临时卷中的问卷是找不到的,如下:

 


 

                      感谢你耐心的看到这里ღ( ´・ᴗ・` )比心,如有哪里有错误请踢一脚作者o(╥﹏╥)o! 

                                       

                                                                        给个三连再走嘛~  

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

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

相关文章

ArcGIS如何快速对齐两个图层

1、问题 如何让两个图层快速对齐 2、使用捕捉工具 移动点或折点&#xff0c;使其与其他要素的折点、边或端点精确重合。 可指定捕捉规则来控制是将输入折点捕捉到指定距离范围内的最近折点、边还是端点。

MySQL数字相关数据处理函数

目录 1. 随机数生成 rand ( ) 2. 四舍五入 round&#xff08;&#xff09; 3. 舍去 truncate ( ) 4. 向上/下取整 5. 空处理 ifnull&#xff08; x , y &#xff09; 1. 随机数生成 rand ( ) rand ( ) 生成 0 到 1 的随机数&#xff1b; rand ( x ) 生成 0 到 1 的随机数…

403 禁止错误: 它是什么?如何修复?

您应该对403错误代码很熟悉&#xff01;这种错误会导致流量损失&#xff0c;甚至错失一些商业机会&#xff01; 什么&#xff1f;您在自己的网站上遇到了403错误&#xff1f;请立即修复它&#xff01;但是什么原因导致这种错误&#xff1f;该如何解决&#xff1f;这两个问题都…

66种智能优化算法和改进优化算法优化BP神经网络【开源代码!】【文末福利IT学习资料】

前言 熟话说得好&#xff0c;创新点不够&#xff0c;智能优化算法来凑&#xff0c;不要觉得羞耻&#xff0c;因为不仅我们这么干&#xff0c;很多外国人也这么干&#xff01;因为创新点实在太难想了&#xff0c;和优化算法结合下是最简单的创新点了&#xff01; 之前给大家分享…

spark shuffle写操作——SortShuffleWriter

写入的简单流程&#xff1a; 1.生成ExternalSorter对象 2.将消息都是插入ExternalSorter对象中 3.获取到mapOutputWriter&#xff0c;将中间产生的临时文件合并到一个临时文件 4.生成最后的data文件和index文件 可以看到写入的重点类是ExternalSorter对象 ExternalSorter 基…

人工智能算法工程师(中级)课程1-Opencv视觉处理之基本操作与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程1-Opencv视觉处理之基本操作与代码详解。OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它提供了各种视觉处理函数&am…

Redis为什么变慢了?一文讲透如何排查Redis性能问题

Redis 作为优秀的内存数据库&#xff0c;其拥有非常高的性能&#xff0c;单个实例的 OPS 能够达到 10W 左右。但也正因此如此&#xff0c;当我们在使用 Redis 时&#xff0c;如果发现操作延迟变大的情况&#xff0c;就会与我们的预期不符。 你也许或多或少地&#xff0c;也遇到…

以太网中的各种帧结构

帧结构&#xff08;Ethernet Frame Structure&#xff09;介绍 以太网信号帧结构&#xff08;Ethernet Signal Frame Structure&#xff09;&#xff0c;有被称为以太网帧结构&#xff0c;一般可以分为两类 —— 数据帧和管理帧。 按照 IEEE 802.3&#xff0c;ISO/IEC8803-3 …

短视频矩阵管理系统:如何提升内容质量,帮助企业获客?

在数字化营销蓬勃发展的今天&#xff0c;短视频已成为企业推广的重要阵地。然而&#xff0c;如何高效管理短视频内容&#xff0c;提升内容质量&#xff0c;进而帮助企业精准获客&#xff0c;成为企业亟待解决的问题。短视频矩阵管理系统应运而生&#xff0c;以其强大的功能和灵…

编程范式之并发编程

目录 前言1. 并发编程的定义2. 并发编程的特点2.1 任务交替执行2.2 状态共享与同步2.3 并行执行 3. 并发编程的适用场景3.1 高性能计算3.2 I/O 密集型应用3.3 实时系统 4. 并发编程的优点4.1 提高资源利用率4.2 缩短响应时间4.3 提高系统吞吐量 5. 并发编程的缺点5.1 编程复杂性…

硬盘模式vmd怎么改ahci_电脑vmd改ahci模式详细步骤

最近有很多网友问&#xff0c;我新买的电脑安装原版win10或win11找不到驱动器呀&#xff0c;进入第三方pe又找不到硬盘&#xff0c;找到硬盘安装后又出现安装蓝屏的情况&#xff0c;新机器怎么回事呀&#xff1f;这位网友内心有点崩溃&#xff0c;不知道啥原因。其实这些都是由…

初识c++(类与对象——上)

一、类的定义 1、类定义格式 • class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后面分号不能省 略。类体中内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或 者成员函…

【Node.js安装教程】

Node.js安装教程 第一步&#xff1a;下载 下载链接&#xff1a;https://nodejs.org/zh-cn 第二步&#xff1a;安装 **方法一&#xff1a;**建议安装在默认路径 方法二&#xff1a;如果不是默认安装路径可能会出现一系列问题&#xff1a;这时可以选择卸载重装或者配置环境变量…

kotlin数据类型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 Kotlin基本数值类型 基本数据类型包括 Byte、Short、Int、Long、Float、Double 整数类型 类型位宽最小值最大…

安卓微信8.0之后如何利用缓存找回的三天之前不可见的朋友圈图片

安卓微信8.0之后如何利用缓存找回的三天之前不可见的朋友圈图片 复习了下安卓程序的知识&#xff0c;我们会了解到&#xff0c;安卓程序清楚数据的时候有两个选项 一个是清除全部数据一个是清除缓存。 清除全部数据表示清除应用数据缓存。 对于安卓微信8.0之后而言&#xff0…

彻底开源,免费商用,上海AI实验室把大模型门槛打下来

终于&#xff0c;业内迎来了首个全链条大模型开源体系。 大模型领域&#xff0c;有人探索前沿技术&#xff0c;有人在加速落地&#xff0c;也有人正在推动整个社区进步。 就在近日&#xff0c;AI 社区迎来首个统一的全链条贯穿的大模型开源体系。 虽然社区有LLaMA等影响力较大…

从 ArcMap 迁移到 ArcGIS Pro

许多 ArcMap 用户正在因 ArcGIS Pro 所具有的现代 GIS 桌面工作流优势而向其迁移。 ArcGIS Pro 与其余 ArcGIS 平台紧密集成&#xff0c;使您可以更有效地共享和使用内容。 它还将 2D 和 3D 组合到一个应用程序中&#xff0c;使您可以在同一工程中使用多个地图和多个布局。 Arc…

【C++杂货铺】C++11新特性

目录 &#x1f308; 前言&#x1f308; &#x1f4c1; C11介绍 &#x1f4c1; 统一初始化列表 &#x1f4c1; 声明 &#x1f4c2; auto &#x1f4c2; decltype &#x1f4c2; 返回类型后置 &#x1f4c2; 范围for &#x1f4c2; 模板别名 &#x1f4c2; nullptr &#x1…

服务器使用PC作为代理访问外网

1、PC上启动代理&#xff0c;比如nginx 下载nginx&#xff1a;http://nginx.org/en/download.html 修改配置文件&#xff0c;在conf下&#xff1a; http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server…

六、 SpringBoot 配置⽂件 ★ ✔

六、 SpringBoot 配置⽂件 本节⽬标1. 配置⽂件作⽤2. 配置⽂件快速⼊⼿3. 配置⽂件的格式4. properties 配置⽂件说明4.1 properties 基本语法4.2 读取配置⽂件4.3 properties 缺点分析 5. yml 配置⽂件说明5.1 yml 基本语法5.2 yml 使⽤进阶5.2.1 yml 配置不同数据类型及 nul…