【Docker】docker的存储

介绍

docker存储主要是涉及到3个方面:

第一个是容器启动时需要的镜像

镜像文件都是基于图层存储驱动来实现的,镜像图层都是只读层,

第二个是: 容器读写层,

容器启动后,docker会基于容器镜像的读层,映射出一个读写层,容器运行产生的一些数据或者对镜像层文件的修改都是在这层体现,但是容器删除这些数据就没有了,这些数据并没有存在外部,而是容器读写层中。

第三个是: docker的数据卷volume,

Docker 卷

Docker 卷用于持久化容器的数据。它们可以被看作是独立于容器生命周期的存储区域。管理 Docker 卷的主要命令有:

  • docker volume create:创建一个新的卷。
  • docker volume ls:列出所有卷。
  • docker volume inspect:查看卷的详细信息。
  • docker volume rm:删除一个或多个卷。
  • docker run -v <volume_name>:/container/path ...:在运行容器时挂载卷

容器卷信息具体内容: CSDN

Docker的数据卷是独立于容器的图层文件系统的,它是利用外部的文件挂载到内部,上面的数据即使容器删除了上面的数据还是存在。具体的目录在:

docker的root dir 上的volumes

Docker卷和Linux系统中的LVM区别

Docker 卷(Volumes)和 Linux 逻辑卷管理器(LVM, Logical Volume Manager)虽然都与存储有关,但它们服务于不同的目的,并且在使用场景、功能特性和实现方式上都有显著的区别。

Docker 卷 (Volumes)

用途

  • Docker 卷主要用于容器内的数据持久化。当容器被删除或重新创建时,卷中的数据不会丢失。
  • 它们提供了一种将宿主机文件系统的一部分挂载到容器中的方法,使得数据可以在多个容器之间共享。

特性

  • 独立于容器生命周期:即使容器停止或被删除,卷中的数据仍然保留。
  • 性能:直接访问宿主机的文件系统,通常比使用联合文件系统更高效。
  • 易于备份和迁移:可以方便地备份卷的内容,也可以将卷从一个宿主机迁移到另一个宿主机。
  • 共享性:可以被多个容器同时挂载和使用。

操作

  • 创建卷:docker volume create my_volume
  • 列出卷:docker volume ls
  • 检查卷信息:docker volume inspect my_volume
  • 删除卷:docker volume rm my_volume
  • 使用卷:docker run -v my_volume:/path/in/container my_image

Linux 逻辑卷管理器 (LVM)

用途

  • LVM 是一种高级磁盘管理技术,用于在 Linux 系统中灵活地管理和分配存储空间。
  • 它允许你动态调整分区大小,组合多个物理磁盘为一个大的逻辑卷,以及在线添加或移除磁盘。

特性

  • 灵活性:可以轻松地扩展或缩小逻辑卷的大小。
  • 抽象层:提供了物理磁盘和文件系统之间的抽象层,使你可以更灵活地管理存储。
  • 跨物理磁盘:可以跨越多个物理磁盘创建逻辑卷。
  • 快照支持:支持创建逻辑卷的快照,便于备份和恢复。

操作

  • 创建物理卷:pvcreate /dev/sda1
  • 创建卷组:vgcreate my_vg /dev/sda1
  • 创建逻辑卷:lvcreate -L 10G -n my_lv my_vg
  • 扩展逻辑卷:lvextend -L +5G /dev/my_vg/my_lv
  • 调整文件系统大小:对于 ext4 文件系统,使用 resize2fs /dev/my_vg/my_lv;对于 XFS 文件系统,使用 xfs_growfs /dev/my_vg/my_lv
  • 查看状态:pvs, vgs, lvs

主要区别

  • 应用场景

    • Docker 卷主要用于容器的数据持久化和共享。
    • LVM 用于整个系统的磁盘管理,提供更高级的磁盘空间分配和管理功能。
  • 生命周期

    • Docker 卷是独立于容器的,即使容器被删除,卷依然存在。
    • LVM 的逻辑卷是与系统相关的,一旦系统被重装或格式化,逻辑卷需要重新配置。
  • 管理粒度

    • Docker 卷主要针对单个目录或文件进行管理。
    • LVM 可以管理整个磁盘分区,甚至跨越多个物理磁盘。
  • 性能

    • Docker 卷直接访问宿主机文件系统,通常性能较好。
    • LVM 提供了额外的抽象层,可能引入一些性能开销,但在大多数情况下影响不大。
  • 功能

    • Docker 卷提供了简单的数据持久化和共享机制。
    • LVM 提供了更多的高级功能,如动态调整大小、快照、镜像等。

总结来说,Docker 卷和 LVM 在 Linux 中扮演着不同的角色,分别解决不同层次的存储问题。选择哪种方式取决于你的具体需求和使用场景。

相关推荐
荒Huang5 分钟前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
海阔天空_201315 分钟前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
桥田智能18 分钟前
气爪在自动化装配线中是如何应用的?
运维·自动化
MonkeyKing_sunyuhua20 分钟前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
追风林1 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
€☞扫地僧☜€2 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
茶馆大橘2 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
其乐无涯2 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流2 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
写bug的小屁孩2 小时前
前后端交互接口(三)
运维·服务器·数据库·windows·用户界面·qt6.3