【问题标题】:is docker storage driver a persistent storagedocker storage driver 是持久存储吗
【发布时间】:2020-06-19 03:46:00
【问题描述】:

我是 docker 新手,我正在尝试了解 docker 中的持久存储。

管理应用程序数据>在容器中存储数据>关于存储驱动程序部分中

https://docs.docker.com/storage/storagedriver/
存储驱动允许 您可以在容器的可写层中创建数据。文件 容器被删除后不会被持久化,同时读取和 写入速度低于本机文件系统性能。

但稍后在管理应用程序数据>在容器中存储数据>使用设备映射器存储驱动程序部分 https://docs.docker.com/storage/storagedriver/device-mapper-driver/
他们使用 direct-lvm 来创建允许持久化数据的逻辑卷

我的问题:使用存储驱动程序意味着:

  1. 容器生成的数据是短暂的?
  2. 如果我们使用逻辑容器生成的数据是短暂的 环回设备上的音量?
  3. 如果我们使用逻辑容器生成的数据是持久的 块设备上的音量?

【问题讨论】:

    标签: docker kubernetes openshift persistent-storage device-mapper


    【解决方案1】:

    存储驱动程序配置本质上是一个安装时设置,一旦您正确设置它,它就不会真正相关。特别是如果你运行 docker info 并且它说它正在使用 overlay2 驱动程序,我会建议关闭这个特定的浏览器选项卡而不做任何更改。

    在您引用的段落中,要删除的重要一点是,您在容器中创建的不在卷目录中的文件将在容器被删除后立即丢失。您使用什么底层存储驱动程序并不重要。容器文件系统、命名卷和绑定挂载之间的性能差异几乎无关紧要(除了在绑定挂载非常慢的 MacOS 主机上)。

    存储驱动程序保存的数据包括临时容器文件系统(它们会一直保存到容器被删除)和底层图像数据。它不包括命名的 Docker 卷或其他绑定挂载的主机目录。

    如果您使用的是 devicemapper,您可能会查看是否可以将主机升级到可以使用 overlay2 驱动程序的较新 Linux 发行版。特别是避免了 devicemapper 驱动程序的固定空间限制。如果您必须使用 devicemapper,普遍的看法是使用专用分区比使用文件更好。不过,正如我前面所说,这本质上是安装时配置,与您的应用程序或 docker run 命令无关。

    【讨论】:

    • 感谢您的回答,您能否告诉我容器所做的更改始终位于可写层上,该层可能位于环回设备(临时存储)上的精简池中或逻辑卷(持久存储)?你能也回答这些问题吗stackoverflow.com/questions/60561245/…
    • 这取决于您在容器文件系统中写入的路径是否在已安装的卷中。 (并且 IME 目前大多数 Docker 安装不使用 devicemapper 设置,因此它永远不会“在环回设备上的精简池中”。)
    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 2017-06-16
    • 2019-10-09
    • 2021-12-20
    相关资源
    最近更新 更多