0

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

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

https://docs.docker.com/storage/storagedriver/
存储驱动程序允许您在容器的可写层中创建数据。删除容器后文件不会被持久化,读写速度都低于原生文件系统性能。

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

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

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

1 回答 1

1

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

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

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

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

于 2020-03-06T12:02:17.443 回答