docker volumes深入理解和数据卷挂载相关指令

Windows系统Docker安装配置全攻略:从WSL2到实战应用 容器化技术通过将应用及其依赖打包成标准化单元,实现了跨环境的一致运行,解决了开发与部署的环境差异难题。其核心原理基于操作系统级虚拟化,共享主机内核但提供隔离的用户空间,这使得容器相比传统虚拟机更加轻量、启动更快。这项技术的核心价值在于提升开发效率、简化运维流程,并成为微服务架构和持续集成/持续部署(CI/CD)的基石。在实际应用场景中,容器技术广泛用于快速搭建开发测试环境、部署Web服务、数据库以及构建可扩展的云原生应用。本文聚焦于在Windows平台上部署Docker的完整流程,详细解析了如何利用WSL 阅读详情

Volumes

推荐官网:Volumes | Docker Docs,在读官网的时候最好是结合着英语有自己的理解,这样可以更为贴切和深刻。下面是本人的一些理解。

数据卷优势

数据卷通过容器可以对保存维持数据具有更好的机制。bind mounts依赖于主机的目录和操作系统,对比之下,数据卷值依赖于docker,这里相比之下就体现出数据卷的优势:

更高的表现能力也就是在性能和执行力方面更强。

预填充类似于数据的拷贝,可以在原有基础上进行执行。 

In addition, volumes are often a better choice than persisting data in a container's writable layer, because a volume doesn't increase the size of the containers using it, and the volume's contents exist outside the lifecycle of a given container.

卷比将数据保留在容器的可写层次更有优势,因为卷不会增加容器的使用大小,并且卷的内容存在容器的生命周期之外。

这意味着数据卷的内容将不会受到容器的影响。而容器的概念我将会在另一篇文章进行说明。容器的消失,不会影响数据卷的内容。

数据卷挂载

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

完成数据卷挂载之后对容器的一切操作都会作用在数据卷对应的宿主机目录了。

为什么要进行数据卷挂载

因为docker容器的隔离属性,docker容器内部的数据,外部是无法直接访问的,如果我们想操作容器内的某一个内容,还需要进入到容器,找到对应的文件,执行相应的命令才能改变,而且可视化效果很低,而且容器之间的数据还不能直接访问,所以我们可以通过数据卷挂载,类似于一种数据映射,这里的概念类似于但补完全等于主从数据库,你对主库进行操作,从库也会跟着改变,你操作数据卷,相应的修改也会发生在docker容器内部对应的挂载文件上。

如何进行数据卷挂载

1.创建数据卷

数据卷操作的基本语法如下:

$ docker service create \
    --mount 'type=volume,src=<VOLUME-NAME>,dst=<CONTAINER-PATH>,volume-driver=local,volume-opt=type=nfs,volume-opt=device=<nfs-server>:<nfs-path>,"volume-opt=o=addr=<nfs-address>,vers=4,soft,timeo=180,bg,tcp,rw"'
    --name myservice \
    <IMAGE>(镜像名)

例子:

数据卷和服务一起使用的时候只支持mount!

指定数据卷driver选项必须用mount

docker run -d \
  --name devtest \
  --mount source=myvol2,target=/app \
  nginx:latest

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

- create 创建一个volume
- inspect 显示一个或多个volume的信息

$ docker volume inspect my-vol
[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
        "Name": "my-vol",
        "Options": {},
        "Scope": "local"
    }
]

""/var/lib/docker/volumes/my-vol/_data",为数据卷的路径
- ls 列出所有的volume

$ docker volume ls

local               my-vol


- prune 删除未使用的volume
- rm 删除一个或多个指定的volume  (eg:docker volume rm my-vol)

停止容器并删除数据卷,注意,这是互相独立的步骤:

docker container stop (容器名)

docker container rm (容器名)

docker volume rm (数据卷名)

2.容器运行时挂载(推荐)

以nginx为例

docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx

容器内的文件路径的观察和获取详细的可以看我对容器理解那片文章。

这里粗略写一下命令:docker exec -it mn bash  之后执行ls可以查看。

执行完数据卷的挂载之后,对指定数据卷的修改就是对容器内文件的修改,非常方便。

# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html

目录挂载

目录挂载与数据卷挂载的语法是类似的:

- -v [宿主机目录]:[容器内目录]
- -v [宿主机文件]:[容器内文件]

例如创建的目录/usr/local/mysql/data 挂载mysql容器内的指定目录

docker run --name cmysql -v /usr/local/mysql/data :(mysql容器内指定目录的绝对路径)-p 3307:3306 -d mysql:(版本号)  (镜像名字)

具体的docker 内部mysql的启动和密码设置可以去dockerhub上看,这篇文章便不再赘述。

数据卷挂载和自己目录挂载的区别:

- 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
- 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看

Apollo Docker宿主机环境自动化配置:架构解析与最佳实践 容器化技术通过封装应用及其依赖,解决了软件部署中的环境一致性问题,其核心原理是利用操作系统级虚拟化实现资源隔离。在自动驾驶等复杂系统工程中,这一技术价值尤为凸显,它能确保算法模块在开发、测试与生产环境中行为一致。Docker作为主流容器引擎,结合NVIDIA Container Toolkit可实现GPU加速资源的容器化访问。本文聚焦于Apollo自动驾驶平台中专门负责宿主机环境准备的`apollo_docker_setup_host`模块,深入剖析其通过自动化脚本处理Docker部署、GPU支持集成、用户 阅读详情

相关推荐

Docker部署RAGFlow:从环境准备到生产级运维的完整实践指南

检索增强生成(RAG)技术通过结合信息检索与大型语言模型,有效解决了传统生成式AI在知识实时性和准确性上的不足。其核心原理是将外部知识库文档进行向量化处理,构建语义索引,在用户提问时先进行精准检索,再将相关上下文与大模型生成能力结合,从而输出可靠答案。这项技术对于构建企业知识库、智能客服和文档分析系统具有重要价值,能显著提升信息利用效率和决策支持能力。在实际应用中,Docker容器化部署成为简化复杂RAG系统运维的关键,它通过标准化环境封装,确保了从开发到生产的一致性。本文聚焦于RAGFlow这一开源RAG

weixin_34023982的博客 396

docker卷--docker volumes 使用学习

docker卷--docker volumes 使用学习

岳来的博客 9521

Docker部署RAGFlow:从零搭建本地知识库问答系统

检索增强生成(RAG)技术通过结合信息检索与大型语言模型(LLM),有效提升了问答系统的准确性与可信度。其核心原理在于先将文档进行向量化处理并存入向量数据库,当用户提问时,系统首先进行语义检索,找到最相关的文档片段,再交由LLM生成精准答案。这项技术对于构建私有化、基于特定知识库的智能应用具有重要价值,广泛应用于企业知识管理、智能客服和内部文档助手等场景。本文聚焦于如何利用Docker容器技术,高效、一致地部署开源的RAGFlow应用,解决其多组件(如MySQL、Milvus)带来的环境配置复杂性问题,实现

weixin_33827590的博客 466

Docker原理简述(一)

docker架构原理

u010157986的专栏 881

Mac极简搭建Pikachu漏洞靶场:Docker与原生环境全攻略

Web安全学习离不开靶场环境,它提供了一个合法、安全的沙箱,用于实践SQL注入、XSS、文件上传等常见漏洞的攻防技术。其核心原理是通过模拟真实应用场景,让安全爱好者与渗透测试初学者在隔离环境中深入理解漏洞成因与利用手法。掌握靶场搭建对于构建个人安全实验平台、验证安全工具与深化漏洞原理认知具有重要价值。无论是用于渗透测试技能训练、CTF比赛准备,还是代码审计与安全开发学习,一个稳定、易用的本地靶场都是不可或缺的实践基础。本文聚焦于在macOS系统上,特别是针对Apple Silicon芯片(M1/M2/M3)

weixin_33713503的博客 458

Docker--存储配置与管理

每个容器都被自动分配了本地存储,也就是。容器由和组成,容器的数据就存放在这些层中。容器本地存储采用的是。这种文件系统将其他文件系统合并到一个联合挂载点,实现了多层数据的叠加并对外提供一个统一视图。联合文件系统是Docker的一种底层技术容器的本地存储是通过进行管理的。存储驱动控制镜像和容器在 Docker 主机上的存储和管理方式。不同的存储驱动采用不同方法实现镜像构建和写时复制策略。对于所能支持overlay2的Linux发行版来说,首选overlay2作为Docker的存储驱动。

恐龙让Lee的博客 3100

Docker volume的使用

有 一个公用的docker服务器,上面跑了很多不同分公司的应用.有一个应用需要挂nfs用来存储附件,出于安全考虑,不想直接挂载到主机目录,再以目录方式映射到容器.

Q先生 644

LaTeX小白必看:5分钟搞定GB/T 7714-2005参考文献格式(Texmaker+BibTeX实战)

本文为LaTeX初学者提供了使用Texmaker编辑器和BibTeX工具链,快速实现GB/T 7714-2005参考文献格式的实战指南。文章详细解析了从获取gbt7714-2005.bst样式文件、编写.bib数据库到四步编译流程的核心步骤,并附有常见问题解决方案,帮助用户高效、准确地完成学术论文的参考文献排版。

weixin_29295541的博客 338

docker数据卷volume详细配置案例讲解

docker容器数据卷详细操作及讲解

武子豪的博客 2757

计算机组成原理(二)—— 数据的表示与运算

本章目录引言一、数制与编码1.1 进位计数制1.1.1 进制及转换1.1.2 真值、机器数1.2 BCD码1.3 ASCII 码1.4 校验码1.4.1 奇偶校验码1.4.2 海明码1.4.3 CRC循环冗余码二、定点数的表示和运算2.1 定点数的表示2.1.1 无符号2.1.2 有符号(原码、反码、补码、移码)2.2 定点数的运算2.2.1 移位运算2.2.2 加减运算(溢出判断)2.2.3 乘法运算2.2.4 除法运算2.3 强制类型转换2.4 数据的存储和排列三、浮点数的表示和运算3.1 浮点数的表示

S mile0804的博客 7472

外贸英文函电第三版张梅英课后习题答案解析

我参加了一些外贸模拟竞赛,将所学知识运用到实际工作中,取得了不错的成绩。此外,我还积极参与了一些外贸实践活动,如参加实习、担任志愿者等,从中积累更多的经验。在这个过程中,我逐渐摸索出了一套适合自己的学习方法,不仅提高了学习效果,还增强了自信心。通过学习这本书,我们可以提高自己在外贸领域的沟通能力,更好地应对未来的工作挑战。在学习这本书的过程中,我遇到了一些困难,比如对某些专业术语的理解不够透彻,对信件的结构和格式掌握不够熟练。出版社: 高等教育出版社。上传者: ʚ河西撒手没ɞ。

weixin_58833001的博客 1424

Docker数据卷实战:从原理到生产环境部署的完整指南

在容器化技术中,数据持久化是构建稳定、可维护应用架构的核心挑战。Docker通过数据卷(Volume)机制,将容器内数据与容器生命周期解耦,实现了数据的独立存储与管理。其原理在于绕过了容器的联合文件系统,直接在宿主机文件系统或指定存储驱动上开辟独立空间,从而保障了数据的持久性与可移植性。这项技术的核心价值在于解决了有状态服务(如数据库、文件存储)在容器重启或迁移时的数据丢失问题,并为多容器间数据共享、配置动态管理提供了标准化方案。在实际应用场景中,开发者需根据需求在Bind Mounts、Volumes和t

weixin_31960565的博客 350

Hexo博客使用PDF.js

clone了一个pdf.js 然后兴高采烈地到文章里使用{% pdf %}标签 结果浏览器弹出了个下载框(使用GitHub的raw) 不知道是不是因为使用GitHub的原因导致这个问题 后来我测试的时候报了个错 优快云上的解决方法 到时候我再试试把资源放回lib/里面看看行不行 目录1.clone1.1.官方方法1.2.NexT主题方法1.3.补充2.修改文件2.1.修改viewer.htm...

LTFan 961

Docker Compose文件详解

version:用于指定当前docker-compose.yml语法遵循哪个版本services:服务,在它下面可以定义应用需要的一些服务,每个服务都有自己的名字、使用的镜像、挂载的数据卷、所属的网络、依赖哪些其他服务等等。networks:应用的网络,在它下面可以定义应用的名字、使用的网络类型等。volumes:数据卷,在它下面可以定义数据卷,然后挂载到不同的服务下去使用。

1304

知识的定义与分类体系详解 - 从零基础到专业理解

知识的定义与分类体系详解 - 从零基础到专业理解

engchina的专栏 4361

信号处理算法:自适应滤波_(8).自适应陷波器

自适应陷波器是一种强大的工具,广泛应用于电力系统、通信系统和生物医学信号处理等领域。通过自适应调整滤波器的参数,自适应陷波器可以在特定频率处形成陷波,从而有效地抑制噪声或干扰信号。常见的自适应算法包括LMS和RLS,它们各有优缺点,可以根据实际需求选择合适的算法。

2401_87715305的博客 1370

Docker - 容器内文件的复制与目录挂载方法

Docker 容器文件管理:复制与挂载实践指南 本文深入探讨 Docker 容器中文件管理的两种核心方法:docker cp 文件复制和目录挂载(Bind Mounts & Volumes),帮助开发者在不同场景下高效管理容器内外文件交互。 核心内容要点: 文件复制 (docker cp) 基本语法:docker cp <源路径> <目标路径>(支持容器与主机间双向复制) 典型应用场景:日志导出、配置备份、测试数据迁移 实战示例:如何从运行中的 Spring Boot 容器提取日志文件 注意事项:目标路径必

千淘万漉虽辛苦,吹尽狂沙始到金 8717

C++(Qt)软件调试---Windows下Qt使用dump定位崩溃位置(1)

在C++/Qt程序崩溃时,往往很难找到崩溃的原因,如果是稳定复现的问题还好,但是多数情况遇见的问题是随机出现的,这时想要快速找到问题并解决就需要通过dump文件定位崩溃位置。

mahuifa的博客 1万+

LibreNMS Docker源码解析:深入理解镜像构建过程与优化

LibreNMS是一款功能强大的开源网络监控工具,而Docker镜像则为其部署和使用提供了极大的便利。本文将深入剖析LibreNMS Docker镜像的构建过程,带你了解其内部结构和优化方法,帮助你更好地使用和定制这个镜像。 ## 一、Dockerfile核心构建步骤解析 Dockerfile是构建Docker镜像的基础,LibreNMS Docker镜像的构建过程主要包含以下关键步骤: #

gitblog_00575的博客 729

Dify之八添加各种在线大模型

Dify之八添加各种在线大模型

yilvyangguang520的博客 938

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Docker 学习:术语、使用、Compose、Swarm

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

freeking101的博客 6167

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Docker入门指南:从Hello World到容器化部署实战

容器化技术是现代软件开发和部署的核心范式,它通过操作系统级虚拟化实现应用与环境的解耦。其核心原理是将应用及其所有依赖打包成标准化的镜像,确保在任何支持容器运行时的环境中都能一致运行。这项技术的价值在于彻底解决了开发、测试和生产环境不一致的经典难题,大幅提升了应用交付的可靠性和效率。在应用场景上,容器化广泛支撑着微服务架构、持续集成/持续部署(CI/CD)流水线以及云原生应用的构建与运维。本文以Docker这一主流容器平台为例,通过从运行第一个Hello World容器到管理镜像、容器生命周期,再到理解数据持

weixin_33724659的博客 344

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

5分钟快速搭建Hadoop集群:基于Docker Compose的3节点实战指南

容器化技术通过将应用及其依赖打包成标准单元,实现了环境的一致性和快速部署。Docker作为主流容器引擎,利用其轻量级虚拟化原理,为复杂分布式系统的搭建提供了高效解决方案。这一技术价值在数据处理领域尤为突出,能够大幅降低环境准备时间,提升开发测试效率。在Hadoop大数据平台的应用场景中,传统部署方式耗时且资源占用高,而基于Docker Compose编排现成镜像,可以快速构建包含NameNode和DataNode的分布式集群。本文聚焦于使用bde2020/hadoop等社区验证镜像,通过自定义网络配置和数据

weixin_34327223的博客 510

01-Docker入门与核心概念

要真正理解Docker,我们不能仅仅停留在"它是一个工具"的层面。任何一项技术的诞生都不是凭空而来的,它是对前人智慧的继承与发展,是对现实问题的回应。容器化技术同样如此——它有着超过四十年的技术积淀,经历了从chroot到LXC,再到Docker和Kubernetes的漫长演进。本章将带你穿越时光,梳理容器化技术的发展脉络,让你明白Docker为什么会出现在这个时代,以及它解决了前人没有解决好的哪些问题。软件交付方式的演进,本质上是人类对计算资源利用率和管理效率不断追求的过程。我们可以将这个过程分为三个主要

Na2SiO3Glue的博客 686

基于Docker部署SoNovel:打造本地小说库的完整指南

容器化技术通过Docker等工具,将应用及其依赖打包成标准单元,实现环境隔离与快速部署。其核心原理在于利用操作系统级虚拟化,在宿主机上创建轻量级、可移植的容器实例。这一技术显著提升了应用部署的效率和一致性,降低了运维复杂度。在个人数字资产管理领域,容器化方案为构建私有服务提供了理想基础。以小说阅读为例,传统在线平台常受限于广告、会员制及内容下架风险。通过Docker部署SoNovel这类开源工具,用户可以在本地搭建私有小说库,实现小说的自由抓取、管理与阅读。该方案部署简单、资源占用低,支持从多个源站自动更新

weixin_33859231的博客 550

Docker核心原理与实战:从容器本质到生产部署全解析

容器技术通过操作系统级别的虚拟化,实现了应用运行环境的轻量化封装与隔离。其核心原理基于Linux的命名空间(Namespaces)和控制组(Cgroups),前者为进程、网络、文件系统等提供隔离视图,后者则负责资源的限制与分配。这种技术架构带来了显著的工程价值:它使得应用及其依赖能够以标准化的镜像形式打包,确保了开发、测试、生产环境的一致性,极大地提升了软件交付与部署的效率。在应用场景上,容器已成为微服务架构、持续集成/持续部署(CI/CD)以及云原生应用的基石。本文以Docker这一主流容器平台为例,通过

weixin_34417183的博客 515
上一篇: docker 安装elasticsearch
下一篇: Nacos中Feign的远程调用深入理解
happystudy_neu
博客等级 码龄4年 1140粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值