Docker: 内存文件系统

Docker: in memory file system

我有一个 docker 容器,它对磁盘执行大量 read/write 操作。我想测试一下当我的整个 docker 文件系统都在内存中时会发生什么。我在这里看到一些答案说这不会是真正的性能提升,但这是为了测试。

我想测试的理想解决方案是共享每个图像的公共部分并在需要时复制到您的内存中 space。

在运行时创建的每个容器文件也应该在内存中并分开。空闲时间不应超过 5GB fs,处理时间不应超过 7GB。

简单的解决方案会为每个容器复制所有共享文件(甚至是您从未使用过的 OS 的那些部分)。

Docker默认在其目录下存放镜像、容器、卷数据。 Container HD 由原始图像和 'container layer'.

组成

您可以使用 RAM disk. You would hard allocate some RAM, mount it, and format it with your file system of choice. Then move your docker installation 将其设置到已安装的 RAM 磁盘并将其符号链接回原始位置。

Setting up a Ram Disk

Best way to move the Docker directory

显然这仅对测试有用,因为 Docker 并且它的图像、卷、容器等会在重新启动时丢失。

镜像的存储和容器的基本文件系统没有区别,分层文件系统作为RO层直接访问镜像层,容器使用上面的RW层来捕获任何变化。因此,您的目标是让容器 运行 在内存中,而 Docker 安装保留在磁盘上并不容易实现。

如果您知道 RW activity 发生的位置(检查 运行 容器的 docker diff 相当容易),对我来说最好的选择是安装 tmpfs在容器中的那个位置,docker(来自 docker run reference)原生支持:

$ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image