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

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安装使用该标志,因为语法更清晰。

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.