Docker 数据卷(Volume)详细介绍

Docker 数据卷(Volume)详细介绍

1. 什么是 Docker 数据卷?

Docker 数据卷(Volume)是一种用于 持久化数据容器间数据共享 的机制。由于容器的存储是临时的,容器删除后其中的数据会丢失,因此使用数据卷可以保证数据不会随着容器的销毁而丢失。

2. 数据卷的特点

  • 持久化存储:容器删除后,数据卷仍然存在,不会随容器删除而丢失。
  • 容器间共享:多个容器可以挂载同一个数据卷,实现数据共享。
  • 高性能:相比于 bind mount(绑定挂载),数据卷由 Docker 管理,性能更优。
  • 独立于文件系统:可以在不同的操作系统或存储驱动(如 overlay2、aufs)间使用。

3. 常见的 Docker 数据卷操作

3.1 创建和管理数据卷

(1)创建数据卷
docker volume create my_volume

这个命令会创建一个名为 my_volume 的数据卷,并由 Docker 管理。

(2)查看所有数据卷
docker volume ls

列出当前所有的 Docker 数据卷。

(3)查看数据卷详细信息
docker volume inspect my_volume

显示 my_volume 的详细信息,包括存储位置、驱动等。

(4)删除数据卷
docker volume rm my_volume

删除 my_volume 数据卷。注意:如果某个容器正在使用该数据卷,删除会失败。

(5)清理未使用的数据卷
docker volume prune

删除所有未被任何容器使用的 Docker 数据卷。


4. 在容器中使用数据卷

4.1 使用 --mount 挂载数据卷

推荐使用 --mount,它的语法清晰,适用于复杂场景:

docker run -d --name my_container --mount source=my_volume,target=/app busybox
  • source=my_volume:使用名为 my_volume 的 Docker 数据卷。
  • target=/app:把 my_volume 挂载到容器内的 /app 目录。

4.2 使用 -v 挂载数据卷

-v 语法较老,但仍然常用:

docker run -d --name my_container -v my_volume:/app busybox

作用与 --mount 相同,但 -v 不支持某些高级选项(如 readonly)。


5. 绑定挂载(Bind Mounts)

除了 Docker 管理的数据卷,Docker 还支持将宿主机目录直接挂载到容器中:

docker run -d --name my_container -v /host/path:/container/path busybox

这种方式适用于:

  • 开发环境(宿主机和容器同步文件)。
  • 日志文件存储(容器删除后,日志仍然保留)。

注意:Bind Mount 依赖于宿主机的路径,可能会导致跨平台兼容性问题。


6. 只读挂载

为了提高安全性,可以使用 :ro(只读)挂载:

docker run -d --name my_container -v my_volume:/app:ro busybox

容器可以读取 /app 目录下的内容,但不能修改。

同样,使用 --mount

docker run -d --name my_container --mount source=my_volume,target=/app,readonly busybox

7. 共享数据卷

多个容器可以共享同一个数据卷:

docker run -d --name container1 -v my_volume:/app busybox
docker run -d --name container2 -v my_volume:/app busybox

container1container2 都可以访问 /app 目录,实现数据共享。


8. 备份和恢复数据卷

8.1 备份数据卷

docker run --rm -v my_volume:/data -v $(pwd):/backup busybox tar -czf /backup/backup.tar.gz -C /data .
  • -v my_volume:/data:将 my_volume 挂载到容器的 /data
  • -v $(pwd):/backup:把宿主机当前目录挂载到容器的 /backup
  • tar -czf:打包 /data 目录下的内容,生成 backup.tar.gz

8.2 恢复数据卷

docker run --rm -v my_volume:/data -v $(pwd):/backup busybox tar -xzf /backup/backup.tar.gz -C /data

该命令会把 backup.tar.gz 中的数据解压到 my_volume 里。


9. 删除数据卷

9.1 删除单个数据卷

docker volume rm my_volume

9.2 删除未被使用的所有数据卷

docker volume prune

这个命令会删除所有没有被任何容器使用的 Docker 数据卷。


10. 数据卷与 Docker Compose

docker-compose.yml 文件中,可以定义数据卷:

version: '3'
services:app:image: busyboxvolumes:- my_volume:/app
volumes:my_volume:

然后运行:

docker-compose up -d

my_volume 会自动创建并挂载到 /app


11. 总结

重点知识回顾

关键点说明
docker volume create my_volume创建数据卷
docker volume ls查看所有数据卷
docker volume inspect my_volume查看数据卷详情
docker volume rm my_volume删除数据卷
docker volume prune清理未使用的数据卷
docker run -v my_volume:/app busybox挂载数据卷
docker run -v /host/path:/container/path busybox绑定挂载
docker run -v my_volume:/app:ro busybox只读挂载
docker-compose.yml在 Docker Compose 中使用数据卷
tar -czftar -xzf备份和恢复数据卷

Docker 数据卷是 持久化数据容器间数据共享 的关键工具,合理使用可以大大提高数据管理的灵活性和安全性。对于使用数据卷的必要性和好处,请阅读文章:docker数据卷的好处与必要性

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

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

相关文章

wxWidgets生成HTML文件,带图片转base64数据

编译环境大家可以看我之前的文章,CodeBlocks + msys2 + wx3.2,win10 这里功能就是生成HTML文件,没用HTML库,因为是自己固定的格式,图片是一个vector,可以动态改变数量的。 效果如下: #include <wx/string.h> #include <wx/file.h> #include <wx/ima…

网络原理一>数据链路层协议->以太网协议

目录 以太网协议的结构&#xff1a;类型&#xff1a;ARP请求应答报文&#xff1a;CRC&#xff1a;MTU: 为什么需要mac地址&#xff1a;mac地址和IP地址的区别&#xff1a; 以太网协议的结构&#xff1a; 以太网是数据链路层和物理层的主要协议 源IP&#xff0c;目的IP就不多说…

售后板子HDMI无输出分析

问题&#xff1a; 某产品售后有1例HDMI无输出。 分析&#xff1a; 1、测试HDMI的HPD脚&#xff08;HDMI座子的19pin&#xff09;&#xff0c;测试电压4.5V&#xff0c;属于正常。 2、用万用表直流电压档&#xff0c;测试HDMI的3对数据脚和1对时钟脚&#xff08;板子通过HDM…

【声音转文字CapsWriter】声音随时转化为文字,CapsWriter提高工作效率

文章目录 前言1. 软件与模型下载2. 本地使用测试3. 异地远程使用3.1 内网穿透工具下载安装3.2 配置公网地址3.3 修改config文件3.4 异地远程访问服务端 4. 配置固定公网地址4.1 修改config文件 5. 固定tcp公网地址远程访问服务端 前言 今天我要给大家安利一个神器——CapsWrit…

十二、Docker Compose 部署 SpringCloudAlibaba 微服务

一、部署基础服务 0、项目部署结构 项目目录结构如下: /home/zhzl_hebei/ ├── docker-compose.yml └── geochance-auth/└── Dockerfile└── geochance-auth.jar └── geochance-system/└── Dockerfile└── geochance-system.jar └── geochance-gateway/…

Games104——游戏引擎Gameplay玩法系统:基础AI

这里写目录标题 寻路/导航系统NavigationWalkable AreaWaypoint NetworkGridNavigation Mesh&#xff08;寻路网格&#xff09;Sparse Voxel Octree Path FindingDijkstra Algorithm迪杰斯特拉算法A Star&#xff08;A*算法&#xff09; Path Smoothing Steering系统Crowd Simu…

Win11非虚拟机安装ISE14.7

官网下载6.18GB 的 Full Installer for Windows 7/XP/Server解压后运行安装程序不勾选Enable WebTalk to send software, IP ...安装程序卡死在ISE:Configure WebTalk&#xff0c;此时打开任务管理器&#xff0c;在详情中找到xwebtalk&#xff0c;右键结束任务。安装程序继续进…

从0开始达芬奇(3.8)

剪视频有主次之分&#xff0c;主就是Aroll&#xff0c;次就是Broll。 智能媒体夹&#xff1a; 媒体池的智能媒体夹部分可以很好区分主次。这个相当于智能搜索&#xff0c;当有大量的素材时&#xff0c;可以为这些素材标明信息&#xff0c;下次使用不需要反复看&#xff0c;直…

python算法和数据结构刷题[3]:哈希表、滑动窗口、双指针、回溯算法、贪心算法

回溯算法 「所有可能的结果」&#xff0c;而不是「结果的个数」&#xff0c;一般情况下&#xff0c;我们就知道需要暴力搜索所有的可行解了&#xff0c;可以用「回溯法」。 回溯算法关键在于:不合适就退回上一步。在回溯算法中&#xff0c;递归用于深入到所有可能的分支&…

基于Java(SpringBoot)+MySQL+Vue实现的平行志愿录取系统

基于spring bootvue实现的平行志愿录取系统 1.项目简介 这两天干上高考出成绩&#xff0c;有不少亲戚家的孩子今年高考&#xff0c;和我询问关于报志愿的问题。老家河北今年是采用所谓的平行志愿。我看了很多的资料才明白什么叫所谓的“平行志愿”。 整个流程好像很是复杂。…

chrome浏览器chromedriver下载

chromedriver 下载地址 https://googlechromelabs.github.io/chrome-for-testing/ 上面的链接有和当前发布的chrome浏览器版本相近的chromedriver 实际使用感受 chrome浏览器会自动更新&#xff0c;可以去下载最新的chromedriver使用&#xff0c;自动化中使用新的chromedr…

Redis常见数据类型与编码方式

⭐️前言⭐️ 本小节围绕Redis中常见的数据类型与编码方式展开。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源码及博主日常练习代码均已上传GitHu…

win编译openssl

一、perl执行脚本 1、安装perl脚本 perl安装 2、配置perl脚本 perl Configure VC-WIN32 no-asm no-shared --prefixE:\openssl-x.x.x\install二、编译openssl 1、使用vs工具编译nmake 如果使用命令行nmake编译会提示“无法打开包括文件: “limits.h”“ 等错误信息 所以…

【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信

Kubernetes中Pod间的通信 本系列文章共3篇: 【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信(本文介绍)【Kubernetes Pod间通信-第3篇】Kubernetes中Pod与ClusterIP服务之间的通信…

< 自用文儿 > 下载 MaxMind GeoIP Databases 对攻击的 IP 做 地理分析

起因 两个 VPM/VPS&#xff0c;安装了 fail2ban 去拦截密码穷举攻击。每天的记录都在增长&#xff0c;以前复制屏幕输出就行&#xff0c;一屏的内容还容易粘贴出来的。昨天已经过 500 条&#xff0c;好奇 fail2ban 是如何存储这些内容的&#xff1f;就发现它在使用 SQLite3 数…

SpringCloudGateWay和Sentinel结合做黑白名单来源控制

假设我们的分布式项目&#xff0c;admin是8087&#xff0c;gateway是8088&#xff0c;consumer是8086 我们一般的思路是我们的请求必须经过我们的网关8088然后网关转发到我们的分布式项目&#xff0c;那我要是没有处理我们绕过网关直接访问项目8087和8086不也是可以&#xff1…

C#面试常考随笔12:游戏开发中常用的设计模式【C#面试题(中级篇)补充】

C#面试题&#xff08;中级篇&#xff09;&#xff0c;详细讲解&#xff0c;帮助你深刻理解&#xff0c;拒绝背话术&#xff01;-CSDN博客 简单工厂模式 优点&#xff1a; 根据条件有工厂类直接创建具体的产品 客户端无需知道具体的对象名字&#xff0c;可以通过配置文件创建…

数字人|通过语音和图片来创建高质量的视频

简介 arXiv上的计算机视觉领域论文&#xff1a; AniPortrait: Audio-Driven Synthesis of Photorealistic Portrait Animation AniPortrait&#xff1a;照片级真实感肖像动画的音频驱动合成 核心内容围绕一种新的人像动画合成框架展开。 研究内容 提出 AniPortrait 框架&a…

数据结构实战之线性表(三)

目录 1.顺序表释放 2.顺序表增加空间 3.合并顺序表 4.线性表之链表实现 1.项目结构以及初始代码 2.初始化链表(不带头结点) 3.链表尾部插入数据并显示 4.链表头部插入数据 5.初始化链表&#xff08;带头结点&#xff09; 6.带头结点的链表头部插入数据并显示 7.带头结…

Docker使用指南(一)——镜像相关操作详解(实战案例教学,适合小白跟学)

目录 1.镜像名的组成 2.镜像操作相关命令 镜像常用命令总结&#xff1a; 1. docker images 2. docker rmi 3. docker pull 4. docker push 5. docker save 6. docker load 7. docker tag 8. docker build 9. docker history 10. docker inspect 11. docker prune…