当前位置: 首页 > article >正文

Docker 数据卷与文件挂载

Docker 数据卷与文件挂载的区别与管理指南

在 Docker 中,数据卷(Volume)和文件挂载(Bind Mount)是两种常用的数据持久化方式。它们的主要目的是将容器内的数据保存到主机上,以便在容器重启或删除后数据不会丢失。本文将详细介绍数据卷和文件挂载的区别、使用方法以及管理技巧。


目录

  1. 数据卷与文件挂载的区别
  2. 数据卷的使用
    • 创建数据卷
    • 挂载数据卷
    • 查看数据卷
    • 删除数据卷
  3. 文件挂载的使用
    • 挂载主机目录
    • 挂载单个文件
  4. 数据卷与文件挂载的选择
  5. 数据卷的高级管理
    • 备份数据卷
    • 恢复数据卷
    • 数据卷的权限管理
  6. 总结

数据卷与文件挂载的区别

特性数据卷(Volume)文件挂载(Bind Mount)
存储位置Docker 管理的存储区域(通常是 /var/lib/docker/volumes/主机上的任意目录或文件
生命周期与容器解耦,容器删除后数据卷仍然存在与主机目录绑定,容器删除后数据仍然存在
性能通常性能较好,适合频繁读写性能依赖于主机文件系统
可移植性更适合跨主机迁移依赖于主机目录结构,可移植性较差
管理方式通过 Docker CLI 或 API 管理直接通过主机文件系统管理
使用场景数据库数据、应用程序日志等配置文件、代码文件等

数据卷的使用

创建数据卷

使用 docker volume create 命令创建一个数据卷。

docker volume create my_volume

挂载数据卷

在运行容器时,使用 -v--mount 参数挂载数据卷。

使用 -v 参数
docker run -d \
  --name my_container \
  -v my_volume:/app/data \
  my_image
使用 --mount 参数
docker run -d \
  --name my_container \
  --mount source=my_volume,target=/app/data \
  my_image

查看数据卷

列出所有数据卷:

docker volume ls

查看数据卷的详细信息:

docker volume inspect my_volume

删除数据卷

删除一个数据卷:

docker volume rm my_volume

删除所有未使用的数据卷:

docker volume prune

文件挂载的使用

挂载主机目录

将主机上的目录挂载到容器中。

docker run -d \
  --name my_container \
  -v /path/on/host:/path/in/container \
  my_image

挂载单个文件

将主机上的单个文件挂载到容器中。

docker run -d \
  --name my_container \
  -v /path/on/host/file.txt:/path/in/container/file.txt \
  my_image

数据卷与文件挂载的选择

  • 使用数据卷的场景

    • 需要持久化存储大量数据(如数据库数据)。
    • 需要跨容器共享数据。
    • 需要 Docker 管理数据的生命周期。
  • 使用文件挂载的场景

    • 需要挂载主机上的配置文件或代码文件。
    • 需要直接编辑主机上的文件并实时同步到容器中。
    • 需要将主机上的特定目录映射到容器中。

数据卷的高级管理

备份数据卷

将数据卷的内容备份到主机上的一个压缩文件中。

docker run --rm \
  -v my_volume:/volume \
  -v /path/on/host:/backup \
  busybox \
  tar cvf /backup/backup.tar -C /volume .

恢复数据卷

将备份文件恢复到数据卷中。

docker run --rm \
  -v my_volume:/volume \
  -v /path/on/host:/backup \
  busybox \
  tar xvf /backup/backup.tar -C /volume

数据卷的权限管理

在挂载数据卷时,可以设置文件权限。

docker run -d \
  --name my_container \
  -v my_volume:/app/data:ro \  # 只读挂载
  my_image

总结

  • 数据卷:适合需要 Docker 管理数据生命周期的场景,如数据库数据、日志文件等。
  • 文件挂载:适合需要直接操作主机文件的场景,如配置文件、代码文件等。

通过合理选择数据卷和文件挂载,可以更好地管理 Docker 容器中的数据持久化和共享需求。希望本文能帮助你更好地理解和使用 Docker 数据卷!


http://www.kler.cn/a/611260.html

相关文章:

  • pyqt SQL Server 数据库查询-优化
  • 根据模板将 Excel 明细数据生成 PDF 文档 | PDF实现邮件合并功能
  • MyBatis打印SQL日志的配置
  • 英伟达黄仁勋谈人工智能趋势,首提代理式AI,后续机器人将登场
  • 算法及数据结构系列 - 滑动窗口
  • SpringCloud微服务框架搭建指南
  • 图解AI对话系统架构:一次讲透核心技术
  • 使用 HBuilder 打包 ruoyi-mall-uniapp 并在微信开发者工具中模拟运行的教程
  • SQL Optimization
  • Linux系统perf命令使用介绍,如何用此命令进行程序热点诊断和性能优化
  • rocky linux 与centos系统的区别
  • 机器学习——欧式距离、闵氏距离、马氏距离、曼哈顿距离、切比雪夫距离(自用)
  • 哪个进程通信效率高
  • Vue 中异步数据加载与方法调用顺序问题:`await` 的正确使用
  • golang不使用锁的情况下,对slice执行并发写操作,是否会有并发问题呢?
  • OPPO手机如何实时翻译会议视频?视频翻译轻松应对多语言场景
  • ES 字段的映射定义了字段的类型及其行为
  • 拥抱人工智能大模型时代:大模型会改变我们的生活吗?
  • 接口自动化进阶 —— Pytest全局配置pytest.ini文件详解!
  • 用PostgreSQL玩转俄罗斯方块:当SQL成为游戏引擎