继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Docker中管理数据的那些事

FFIVE
关注TA
已关注
手记 455
粉丝 70
获赞 459

图像描述
默认情况下,在容器内部创建的所有文件会被存放在一个可写的容器层里。这意味着,

  • 当该容器不再存在时,数据不会持久保存,如果另一个进程需要这些数据,可能很难从容器中提取数据。
  • 容器的可写层与其运行的主机紧密耦合。数据很难轻易转移到其他地方。
  • 写入容器的可写层需要存储驱动程序来管理文件系统,这个过程使用Linux内核,提供了一个联合文件系统。这种额外的抽象层会降低性能表现,与直接写入主机文件系统的数据卷相比,这种方式表现更差。

Docker提供了两种让容器在主机上存储文件的选项,这样即使容器停止,文件也能保持持久:卷(volume)和绑定挂载(bind mount)。

Docker 还支持容器在主机内存中存储文件。这些文件不会被保存下来。如果你在 Linux 上运行 Docker,会使用 tmpfs 挂载将文件存储在主机的系统内存中。在 Windows 上运行 Docker 时,会使用命名管道将文件存储在主机内存中。

tmpfs 是一种文件系统,用于将文件临时存储在内存中,而命名管道是 Windows 中用于在进程间通信的一种机制。

👉 选择正确的安装类型

无论你选择哪种类型的挂载,容器内的数据看起来都相同。它在容器文件系统中表现为一个目录或一个文件。

一个简单的办法来理解卷、绑定挂载和tmpfs挂载之间的区别,就是想象这些数据在Docker主机上的位置。如图所示。
图片描述

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

绑定挂载和挂载绑定都可以使用 -v--volume 标志挂载到容器中,但它们的用法稍有不同。要挂载 tmpfs,你可以使用 --tmpfs 标志。我们建议无论是容器还是服务,无论是绑定挂载、数据卷还是 tmpfs 挂载,都使用 --mount 标志,因为其用法更清晰。

👈 卷:

这是一张图片,请查看。图片描述

Volumes 由 Docker 创建和管理。你可以使用 docker volume create 命令明确地创建卷,或者 Docker 会在创建容器或服务时自动创建卷。

当你创建一个数据卷的时候,它会被存储在Docker主机上的一个目录中。当你将该数据卷挂载到一个容器时,就是这个目录被挂载到了容器中。这与绑定挂载的工作方式相似,但有几点不同:数据卷是由Docker来管理的,并且与主机的核心功能相隔离。简单来说,就像绑定挂载一样,但数据卷由Docker管理并保持与主机核心功能的隔离。

一个给定的卷可以同时挂载到多个容器上。当没有正在运行的容器在使用该卷时,该卷仍然可供Docker使用,并不会被自动清理。你可以运行 docker volume prune 来清理不用的卷。

当你挂载一个卷时,这个卷可能是命名的或匿名的。匿名卷会被赋予一个随机且在给定的 Docker 主机内唯一的名称。就像命名卷一样,匿名卷在使用它们的容器被移除后仍然存在,不过,如果你在创建容器时使用了 --rm 标志,匿名卷就会被销毁。如果你连续创建使用匿名卷的多个容器,每个容器都会有自己的卷。匿名卷不会自动共享或被重用。要让两个或多个容器共享一个匿名卷,你需要使用随机卷 ID 来挂载该匿名卷。

卷也可以使用卷驱动程序,这使得你可以在远程主机或云服务提供商上存储数据等等其他选项。

👉 绑定挂载

GIF 图片 描述

与卷相比,绑定挂载功能有限。当你使用绑定挂载时,主机机器上的一个文件或目录会被挂载到容器中。该文件或目录通过其在主机机器上的完整路径进行引用。文件或目录无需事先存在于Docker主机上,若不存在,会在需要时创建。绑定挂载速度快,但是需要主机的文件系统具备特定的目录结构。如果你正在开发新的Docker应用程序,建议考虑使用命名卷。你不能直接使用Docker命令行来管理绑定挂载。

👉 tmpfs:

图片
点击查看图片

一个 tmpfs 挂载不会持久化到 Docker 主机或容器的磁盘上。它可以在容器的生命周期内被使用,用来存储临时状态或敏感信息。例如,Swarm 内部服务会使用 tmpfs 挂载来挂载秘密信息到服务的容器中。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP