【问题标题】:Docker: in memory file systemDocker:在内存文件系统中
【发布时间】:2017-01-04 17:27:25
【问题描述】:

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

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

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

简单的解决方案会为每个容器复制所有共享文件(甚至是您从不使用的操作系统部分)。

【问题讨论】:

    标签: docker filesystems in-memory


    【解决方案1】:

    Docker 默认将镜像、容器和卷数据存储在其目录中。容器 HD 由原始图像和“容器层”组成。

    您可以使用RAM disk 进行设置。您将硬分配一些 RAM、挂载它并使用您选择的文件系统对其进行格式化。然后move your docker installation 到已安装的 RAM 磁盘并将其符号链接回原始位置。

    Setting up a Ram Disk

    Best way to move the Docker directory

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

    【讨论】:

    • 我希望容器 HD 位于内存中,而不是主机上的 docker 安装。
    • Docker 默认将镜像、容器和卷数据存储在其目录中。容器 HD 由原始图像和“容器层”组成。 docs.docker.com/engine/userguide/storagedriver/…
    • 使用这个可能更好,但我没有尝试过:docs.docker.com/registry/storage-drivers/inmemory 此外,Linux 和其他操作系统具有内置的磁盘缓存,因此您的容器的磁盘访问可能无论如何都不会触及实际磁盘.
    • 这里的“高清”是什么意思?
    【解决方案2】:

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

    如果您知道您的 RW 活动发生在哪里(检查正在运行的容器的 docker diff 相当容易),对我来说最好的选择是安装在容器中该位置的 tmpfs,它本机支持码头工人(来自docker run reference):

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

    【讨论】:

    • 我可以在 tmpfs 上使用音量吗?示例:docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k -v $(pwd)/database:/run/database my_image 在这种情况下会发生什么?
    猜你喜欢
    • 1970-01-01
    • 2010-10-28
    • 2015-08-04
    • 2011-07-30
    • 2023-02-02
    • 2022-11-25
    • 2011-08-03
    • 1970-01-01
    • 2019-10-15
    相关资源
    最近更新 更多