互联网技术 / 互联网资讯 · 2023年12月30日 0

Docker教程:在Docker中管理数据的云计算核心技术

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

当该容器不再存在时,数据将不会持久保存,并且如果另一个进程需要它,则可能很难从容器中取出数据。

容器的可写层与运行容器的主机紧密耦合。您不能轻易地将数据移动到其他地方。

写入容器的可写层需要 存储驱动程序来管理文件系统。存储驱动程序使用Linux内核提供联合文件系统。与使用直接写入主机文件系统的数据卷相比,这种额外的抽象降低了性能。

DockeR为容器提供了两个选项来将文件存储在主机中,以便即使容器停止后文件也可以持久存储:卷和 绑定安装。如果您在linux上运行DockeR,则还可以使用tMpfs挂载。如果您在Windows上运行DockeR,则还可以使用命名管道。

选择正确的类型的卷

无论您选择使用哪种类型的安装,容器中的数据看起来都是相同的。它在容器的文件系统中显示为目录或单个文件。

可视化卷,绑定挂载和tMpfs 挂载之间差异的一种简单方法是考虑数据在DockeR主机上的位置。

Docker教程:在Docker中管理数据的云计算核心技术

卷存储在主机文件系统的一部分中,该文件系统由DockeR管理(/vaR/lib/dockeR/voluMes/在linux上)。非DockeR进程不应修改文件系统的这一部分。卷是在DockeR中持久存储数据的最佳方法。

绑定挂载可以存储在主机系统上的任何位置。它们甚至可能是重要的系统文件或目录。DockeR主机或DockeR容器上的非DockeR进程可以随时对其进行修改。

tMpfs挂载仅存储在主机系统的内存中,并且永远不会写入主机系统的文件系统中。

有关安装类型的更多详细信息

卷:由DockeR创建和管理。您可以使用dockeR voluMe cReate命令显式创建卷,或者DockeR可以在容器或服务创建期间创建卷。

创建卷时,它存储在DockeR主机上的目录中。将卷装入容器时,此目录就是装入容器的目录。这类似于绑定挂载的工作方式,除了卷由DockeR管理并且与主机的核心功能隔离。

给定的体积可以同时安装到多个容器中。当没有正在运行的容器使用卷时,该卷仍可用于DockeR,并且不会自动删除。您可以使用删除未使用的卷dockeR voluMe pRune。

挂载卷时,它可以命名为或匿名。匿名卷首次安装到容器中时,不会为其指定明确的名称,因此DockeR为它们提供一个随机名称,该名称在给定的DockeR主机中保证是唯一的。除了名称之外,命名卷和匿名卷的行为也相同。

卷还支持使用卷驱动程序,该驱动程序使您可以将数据存储在远程主机或云提供商上,以及其他可能性。

绑定挂载:自DockeR早期以来可用。与卷相比,绑定安装的功能有限。使用绑定安装时,主机上的文件或目录将安装到容器中。文件或目录由主机上的完整路径引用。该文件或目录不需要在DockeR主机上已经存在。如果尚不存在,则按需创建。绑定挂载性能很高,但是它们依赖于主机的文件系统,该文件系统具有可用的特定目录结构。如果要开发新的DockeR应用程序,请考虑使用命名卷。您不能使用DockeR CLI命令直接管理绑定安装。

tMpfs Mounts:tMpfs挂载不会持久化在磁盘上,无论是在DockeR主机上还是在容器内。容器在其生存期内可以使用它来存储非持久状态或敏感信息。例如,在内部,群集服务使用tMpfs安装将机密安装到服务的容器中。

命名管道:npIPe 挂载可用于DockeR主机与容器之间的通信。常见用例是在容器内运行第三方工具,并使用命名管道连接到DockeR engine API。

绑定安装和卷都可以使用-v或 –voluMe标志安装到容器中,但是两者的语法略有不同。对于tMpfs 安装,您可以使用该–tMpfs标志。我们建议–Mount对容器和服务,绑定安装,卷或tMpfs安装使用该标志,因为语法更清晰。