我有一个docker容器,可以对磁盘进行大量读/写操作。我想测试当我的整个docker文件系统在内存中时会发生什么。我在这里看到一些答案,说这不会是真正的性能提升,但这是用于测试。
我想测试的理想解决方案是共享每个图像的公共部分,并在需要时复制到您的存储空间。
在运行时创建的每个容器文件也应该在内存中并分开。它在空闲时间内不应超过5GB fs,在处理时间内不应超过7GB。
简单的解决方案会为每个容器复制所有共享文件(甚至是您从未使用过的操作系统的那些部分)。
答案 0 :(得分:10)
图像的存储与容器的基本文件系统之间没有区别,分层FS直接作为RO层访问图像层,容器使用上面的RW层来捕获任何更改。因此,当Docker安装保留在磁盘上时,让容器在内存中运行的目标并不容易实现。
如果您知道RW活动的位置(检查正在运行的容器的docker diff
相当容易),对我来说最好的选择就是在容器中的那个位置安装tmpfs,这是本地的由docker支持(来自docker run reference):
$ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image
答案 1 :(得分:2)
Docker默认将图像,容器和卷数据存储在其目录中。容器HD由原始图像和“容器层”组成。
您可以使用RAM disk进行设置。您将很难分配一些RAM,安装它,并使用您选择的文件系统对其进行格式化。然后move your docker installation到已安装的RAM磁盘并将其符号链接回原始位置。
Best way to move the Docker directory
显然,这仅适用于测试Docker,它的图像,卷,容器等在重启时会丢失。