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就不多说…

疯狂SQL转换系列- SQL for Milvs2.4

鉴于Milvus仍在不停的迭代新版本&#xff0c;推出新功能&#xff0c;其SDK目前并不稳定。目前其2.4版本的SDK接口已与之前的2.2版本有了较大的差别&#xff0c;功能上也有了一定的调整。为此&#xff0c;我们重新提供了针对[Milvus2.4](https://github.com/colorknight/moql-tr…

售后板子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…

使用 Python 编程语言来实现机器学习小项目教程案例

以下是一个简单的机器学习小项目教程案例,使用 Python 编程语言和 Scikit-learn 库来实现一个分类任务。我们将使用经典的鸢尾花(Iris)数据集来训练一个分类器,预测鸢尾花的种类。 项目目标 使用机器学习算法对鸢尾花数据集进行分类,预测鸢尾花的类别(Setosa、Versicolor…

DKG(Distributed Key Generation)协议

一、DKG是什么 DKG(分布式密钥生成)提供了一种去中心化的方法,使各个参与方在不相互信任的情况下生成共享密钥,以确保安全通信和多方参与的机密性。 DKG技术的关键思想是使用多方计算(secure multiparty computation)和秘钥共享(secret sharing)的概念。 秘钥共享 则…

十二、Docker Compose 部署 SpringCloudAlibaba 微服务

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

使用 Docker(Podman) 部署 MongoDB 数据库及使用详解

在现代开发环境中&#xff0c;容器化技术&#xff08;如 Docker 和 Podman&#xff09;已成为部署和管理应用程序的标准方式。本文将详细介绍如何使用 Podman/Docker 部署 MongoDB 数据库&#xff0c;并确保其他应用程序容器能够通过 Docker 网络成功连接到 MongoDB。我们将逐步…

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;直…

【Elasticsearch】parent aggregation

在Elasticsearch中&#xff0c;Parent Aggregation是一种特殊的单桶聚合&#xff0c;用于选择具有指定类型的父文档&#xff0c;这些类型是通过一个join字段定义的。以下是关于Parent Aggregation的详细介绍&#xff1a; 1.基本概念 Parent Aggregation是一种聚合操作&#x…

自学Java-面向对象编程入门

自学Java-面向对象编程入门 一、静态方法的注意事项二、简易版电影信息展示系统1、测试类2、电影类3、电影操作类 一、静态方法的注意事项 1、静态方法中可以直接访问静态成员&#xff0c;不可以直接访问实例成员 2、实例方法中既可以直接访问静态成员&#xff0c;也可以直接访…

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

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

【自学笔记】Python的基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Python基础知识总览1. Python简介2. 安装与环境配置3. 基本语法3.1 变量与数据类型3.2 控制结构3.3 函数与模块3.4 文件操作 4. 面向对象编程&#xff08;OOP&#…

文件上传到腾讯云存储、签名及设置过期时间

将文件上传到腾讯云对象存储&#xff08;COS&#xff0c;Cloud Object Storage&#xff09;可以通过腾讯云提供的 SDK 实现。以下是详细的步骤和示例代码&#xff0c;帮助您完成文件上传操作。 步骤 注册腾讯云账号并创建存储桶&#xff1a; &#xff08;1&#xff09;登录腾讯…

基于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…