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

news2024/9/23 3:23:32

 

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

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

                                                           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.coloradmin.cn/o/1921359.html

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

相关文章

【JavaScript 算法】广度优先搜索:层层推进的搜索策略

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、算法原理二、算法实现三、应用场景四、优化与扩展五、总结 广度优先搜索&#xff08;Breadth-First Search, BFS&#xff09;是一种用于遍历或搜索图或树数据结构的算法。该算法从起始节点开始&#xff0c;逐层向外扩展…

delete删除new[]创建的数组会发生什么

这是国泰君安技术面出的题 先说结论 如果是删除原始的数据类型&#xff0c;并不会发生什么&#xff0c;也不会产生内存泄露。如果是删除自定义类型&#xff0c;比如说类和结构体&#xff0c;则只能删除第一个&#xff0c;后面的可能会内存泄露。 一、删除原始数据类型 举个…

LeetCode 141.环形链表 C写法

LeetCode 141.环形链表 C写法 思路&#x1f9d0;&#xff1a; ​ 利用快慢指针&#xff0c;快指针走两步&#xff0c;慢指针走一步&#xff0c;如果没有环&#xff0c;快指针走完就返回false&#xff0c;如果有环&#xff0c;那么快指针一定先进环&#xff0c;等慢指针进环以后…

闯荡西游之路,续写经典传奇,大话西游图文架设教程

前言 这次给大家带来的是我精心准备了很久的&#xff0c;也是大家呼声很高的大话西游&#xff0c;云集西游版本&#xff0c;安卓苹果双端&#xff0c;非变态版本&#xff0c;包含天梯、星阵、八卦等玩法&#xff0c;游戏内置GM后台&#xff0c;快来体验一下吧~ 本文讲解大话西…

公司网站搭建源码系统 带网站的源代码包以及搭建部署教程

系统概述 随着互联网的飞速发展&#xff0c;网站已成为企业对外展示、交流和服务的重要窗口。然而&#xff0c;对于非技术背景的企业而言&#xff0c;自行开发网站往往面临技术门槛高、成本高、周期长等难题。因此&#xff0c;我们推出了这款集成了先进技术和丰富功能的网站搭…

一文详解DDL同步及其应用场景

目录 一、什么是DDL&#xff1f; 二、什么是DDL同步&#xff1f; 三、DDL同步的痛点 1、缺少自动DDL同步机制 2、缺少DDL变更监测预警 四、解决方案 五、应用场景及案例 案例一 案例二 案例三 在现代数据管理中&#xff0c;数据库的结构变更频繁且不可避免&#xff0c;特别是在…

风光摄影:相机设置和镜头选择

写在前面 博文内容为《斯科特凯尔比的风光摄影手册》读书笔记整理涉及在风景拍摄中一些相机设置&#xff0c;镜头选择的建议对小白来讲很实用&#xff0c;避免拍摄一些过曝或者过暗的风景照片理解不足小伙伴帮忙指正 &#x1f603;,生活加油 99%的焦虑都来自于虚度时间和没有好…

秋招在线测评,性格和岗位是如何匹配的?

又是一年的秋招季&#xff0c;应届毕业生都会面临一个问题&#xff0c;如何将性格和岗位相互匹配&#xff0c;以找到最合适的自己的岗位呢&#xff1f; 事实上绝大部分人并没有找准最适合的岗位..... 对于应届毕业生来说&#xff0c;通常都是想着先拿下offer&#xff0c;至于是…

frameworks 之Zygote

frameworks 之Zygote Zygote.rc 解析Zygote 启动ZygoteInit.javaZygote.cppLiunx fork Zygote 中文意思为受精卵。 和其意思一样&#xff0c;该功能负责android系统孵化service 和 app 进程。 本文讲解Zygote的大概流程。涉及的相同的类&#xff0c;如下所示 system/core/rootd…

centos9+mysql8.0下mycat1.6部署

#创作灵感# 整理一下mysql代理技术&#xff0c;这个当时是和mysql集群部署一个项目的&#xff0c;一并整理出来供参考。 1、环境准备 此处使用的为M-M-SS双主双从结构集群&#xff0c;集群部署方法放在我的上一篇文章中 防火墙可以使用firewall-cmd放行&#xff0c;演示环境…

Nature Communications|柔性高密度、高灵敏应变传感器阵列(柔性应变传感/界面调控/电子皮肤/柔性电子)

复旦大学武利民( Limin Wu)和李卓( Zhuo Li)团队,在《Nature Communications》上发布了一篇题为“High-density, highly sensitive sensor array of spiky carbon nanospheres for strain field mapping”的论文。论文内容如下: 一、 摘要 在工程应用中,准确地映射应变…

SQL 删除emp_no重复的记录,只保留最小的id对应的记录。

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 删除emp_no重…

CDGA|数据治理:标准化处理与确保数据可溯源性

在当今信息爆炸的时代&#xff0c;数据已成为企业决策、科学研究和政府管理的核心要素。然而&#xff0c;随着数据量的不断增加和来源的多样化&#xff0c;数据治理成为了一个亟待解决的问题。特别是在处理复杂数据时&#xff0c;标准化处理和确保数据的可溯源性显得尤为重要。…

etcd 实现分布式锁

10 基于 Etcd 的分布式锁实现原理及方案

Python算法分析学习目标及能力验证

1、突破编程的关键点 不破不立&#xff0c;如何破&#xff1f;如何立&#xff1f; 人生苦短&#xff0c;我用python 目标&#xff1a;不在于多&#xff0c;而在于准&#xff1b; 验证&#xff1a;必须量化&#xff0c;否则都是虚夸。 那么目标怎么准确可量化呢&#xff1f; …

容联云发布容犀大模型应用,重塑企业“营销服”|WAIC 2024

7月6日&#xff0c;在2024世界人工智能大会上&#xff0c;容联云成功举办主题为“数智聚合 产业向上”的生成式应用与大模型商业化实践论坛。 论坛上&#xff0c;容联云发布了容犀智能大模型应用升级&#xff0c;该系列应用包括容犀Agent Copilot、容犀Knowledge Copilot、容犀…

动态规划的一种常见技巧

动态规划是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。 动态规划并不是一种算法&#xff0c;而是一种思想&#xff0c;或者说策略 动态规划的思想就是将大问题分解成一个一个的小问题&#xff0c;聚焦到每个小问题并逐个击破&#xff0c;小问题解决了就没有大问…

数据融合工具(7)文本属性值规范化处理

一、需求背景 数据检查方案中&#xff0c;对文本属性值的检查一般包括以下内容&#xff1a; 检查属性值中不能含有不合理的标点符号&#xff08;“&#xff0c;”、“&#xff1f;”、空格、换行符等&#xff09;&#xff1b; 确认全部属性字段是否为半角&#xff1b; 名称简…

FastAPI 学习之路(四十二)利用Docker部署发布

我们之前的部署都是基于本地的部署&#xff0c;我们这次来看下&#xff0c;如何使用docker部署我们的fastapi项目。 编写Dockerfile ①&#xff1a;首先编写一个docker镜像的制作文件Dockerfile FROM python:3.10RUN pip install fastapi uvicorn aiofiles sqlalchemy pytho…

led灯什么牌子的质量好呢?盘点五款高口碑的led灯

很多新手小白在选购护眼台灯前&#xff0c;都会思考led灯什么牌子的质量好呢&#xff1f;这因为有的无良商家因为想要降低成本&#xff0c;使用一些廉价低劣的处理器&#xff0c;led灯的电压和功率都难以保证&#xff0c;有的甚至会产生有害的辐射&#xff0c;对人体的健康造成…