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,一经查实,立即删除!

相关文章

JVM堆内存的结构,YGC,FGC的原理

JVM堆内存结构&#xff1a; JVM堆内存可分为三个区域&#xff1a;新生代&#xff08;Young Generation&#xff09;、年老代&#xff08;Tenured Generation&#xff0c;也叫做Old Generation&#xff09;和永久代&#xff08;Permanent Generation&#xff0c;也叫做Method Ar…

linux 设置nginx开机自启

1、关闭当前nginx运行 systemctl stop nginx 2、添加以下内容到nginx.service文件&#xff0c;注意nginx.pid文件的路径&#xff0c;要替换哦&#xff01; vim /etc/systemd/system/nginx.service [Unit] DescriptionThe NGINX HTTP and reverse proxy server Afternetwork…

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 的随机数…

简单理解Lua 协程(coroutine)

也许更好的阅读体验 协程简单理解为可以暂停的线程&#xff0c;但是同一时刻只有一个协程可以处于运行状态。 文章目录 coroutine.create()coroutine.resume()coroutine.wrap()coroutine.yield()coroutine.resume()参数传递resume和yield之间互换数据 coroutine.create() lua…

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

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

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

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

485通讯抗干扰,超时重发,不断重连的程序架构

485通讯抗干扰,超时重发,不断重连的编程思路 在工程中会遇到一种情况,当通信受到干扰之后,数据超时重发多次,无法被成功发出去,当恢复干扰后,之前发送的指令就被报错清掉了,相当于串口掉线之后,即使短暂时间内通信连上,掉线之后发出的指令也不生效。 为了确保受到干…

OFDM符号周期

OFDM符号周期的确定 OFDM符号周期的确定是一个复杂的过程&#xff0c;需要考虑多个因素。以下是主要的考虑因素和确定步骤&#xff1a; 主要考虑因素 信道特性 多径延迟扩展相干时间 系统要求 数据速率频谱效率 硬件限制 采样率计算复杂度 应用场景 移动性要求覆盖范围 …

spark shuffle写操作——SortShuffleWriter

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

Vant Ui 最新访问地址

Vant 4 - A lightweight, customizable Vue UI library for mobile web apps. 顺带一个顶部导航栏正常写法 先使用吸顶为0&#xff0c;然后再写nav-bar <van-sticky :offset-top"0"> <van-nav-bar class"top-title" title"村集体土地公示&q…

对为什么react需要时间分片,vue3不需要的浅学习

1、时间分片 时间分片指在让应用在cpu进行大量计算时也能与用户交互&#xff0c;但时间分片只能对大量cpu计算进行优化&#xff0c;无法优化复杂DOM操作&#xff0c;因为要确保用户正在操作的界面是最新。 web卡顿的场景&#xff1a; 1、cpu计算量不大&#xff0c;但dom操作…

人工智能算法工程师(中级)课程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;以其强大的功能和灵…

TCP/IP协议超时重传,以及应用层超时重传一文详解

很多人会有这样的疑问 TCP/IP协议内置了超时重传的功能&#xff0c;那为什么连接完全断开或超时时&#xff0c;应用层代码段还会进行重传处理呢&#xff1f; TCP协议的重传机制 客户端 服务器| ||---- 数据段1 --…

编程范式之并发编程

目录 前言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;类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或 者成员函…