Docker(五)进阶:Docker卷(volumes)

前言

学习本文需要一些了解Docker的概念以及一些名词。
个人网站:https://linzyblog.netlify.app/

一、在Docker中管理数据

1、为什么要挂载?

默认情况下,在容器内创建的所有文件都存储在可写容器层上。这意味着:

  • 当该容器被删除时,数据也会被同样删除,如果有另一个进程需要数据,就很难从容器中取出数据。
  • 容器的可写层与运行容器的宿主机紧密耦合,你无法将数据移动到其他地方。
  • 写入容器的可写层需要存储驱动程序来管理文件系统。存储驱动程序提供了一个联合文件系统,使用 Linux 内核。与使用直接写入主机文件系统的数据卷相比,这种额外的抽象会降低性能 。

Docker有两种方法:volumes 卷 和 bind mounts 绑定挂载 可以让容器在主机上存储文件,以便即使容器停止或删除后文件也能持久化保存。
Docker 还支持将文件存储在主机内存中的容器。此类文件不会持久保存。如果您在 Linux 上运行 Docker,则使用tmpfs 挂载将文件存储在主机的系统内存中。如果您在 Windows 上运行 Docker,命名管道用于将文件存储在主机的系统内存中。

2、选择正确的挂载方式

无论你选择那种挂载的方式,容器内的数据看起来都是一样的。数据以目录或文件系统中的单个文件的形式公开。

卷(volumes)、绑定挂载(bind mounts)和 tmpfs挂载(tmpfs mounts) 之间的差异就是数据在Docker主机上的位置不同。

在这里插入图片描述

  • 卷(volumes):存储在由 Docker(/var/lib/docker/volumes/在 Linux 上)管理的主机文件系统的一部分中。非 Docker 进程不应修改文件系统的这一部分。卷是在 Docker 中持久化数据的最佳方式。
  • 绑定挂载(bind mounts):可以存储在主机系统的任何位置。它们甚至可能是重要的系统文件或目录。Docker 主机或 Docker 容器上的非 Docker 进程可以随时修改它们。
  • tmpfs挂载(tmpfs mounts):仅存储在主机系统的内存中,永远不会写入主机系统的文件系统。

二、卷(volume)

1、卷的概述

卷(volume)提供了将容器的特定文件系统路径连接回主机的能力,简单来说就是将容器的目录映射到主机上。如果容器中的目录已挂载,则该目录中的更改也会在主机上看到。如果我们在容器重启时挂载相同的目录,我们会看到相同的文件,这就是容器的持久化和同步操作。

  • Docker Volume 命令能让容器从宿主机中读取文件,或从容器中持久化数据到宿主机中,让容器与容器产生的数据分离开来,一个容器可以挂载多个不同的目录
  • Volume的生命周期是独立于容器的生命周期之外的,即使容器删除了,Volume也会被保留下来,Docker不会因为这个Volume没有被容器使用而自动回收。
  • 在容器中,添加或修改这个文件夹里的文件也不会影响到容器的联合文件系统。

2、卷的优点

卷是Docker容器生成和使用数据的首选保存机制。绑定挂载依赖于主机的目录结构和操作系统,但卷是完全由Docker管理。

  • 卷比绑定挂载更容易备份或迁移数据。
  • 卷可以直接使用Docker CLI 命令或 Docker API 管理。
  • 卷可以在 Linux 和 Windows 容器上运行。
  • 卷可以在多个容器之间更安全的共享。
  • 卷允许将卷挂载到远程主机或云服务器上,以加密卷的内容或添加其他功能。
  • 新卷的内容可以由容器预先填充。
  • Docker Desktop 上的卷比 来自Mac 和 Windows 主机的绑定挂载具有更高的性能。

此外,与将数据持久化到容器的可写层相比,卷通常是更好的选择,因为卷不会增加使用它的容器的大小,而且卷的内容存在于给定容器的生命周期之外

在这里插入图片描述

注意:如果你的容器需要生成非持久化状态数据,优先选择tmpfs 挂载以避免将数据永久存储在任何地方,并且避免写入容器的可写层来提高容器性能。

3、卷的使用

  • 格式:
docker run -it 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lin钟一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值