运行整个 docker 容器,并将卷安装在内存中

Vic*_*rov 6 tmpfs docker docker-volume

我想在内存中运行整个 docker 容器,而不将卷映射到主机的硬盘驱动器。

此处描述的 TMPFS有助于将卷安装为“内存卷”,但我正在寻找一种方法来启动映射到内存的整个容器。

--volume-driver可能是我必须使用的,但我找不到支持的驱动程序的文档列表(不是overlay2)。

所以,我尝试过:

docker run -td --name my-container --volume-driver tmpfs container-image
docker run -td --name my-container --volume-driver memfs container-image
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下,docker inspect my-container我观​​察到:

    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/d1d112972c6b531976dd33e27edf213fc578856c3ee96b99c9afe53ad3f71a5e- ... /diff",
            "MergedDir": "/var/lib/docker/overlay2/d1d112972c6b531976dd33e27edf213fc578856c3ee96b99c9afe53ad3f71a5e/merged",
            "UpperDir": "/var/lib/docker/overlay2/d1d112972c6b531976dd33e27edf213fc578856c3ee96b99c9afe53ad3f71a5e/diff",
            "WorkDir": "/var/lib/docker/overlay2/d1d112972c6b531976dd33e27edf213fc578856c3ee96b99c9afe53ad3f71a5e/work"
        },
        "Name": "overlay2"
    }
Run Code Online (Sandbox Code Playgroud)

docker stats还指出这两种情况都使用默认映射策略。

Rom*_*ost 2

有一个问题已被关闭以做到这一点。这是评论的链接https://github.com/moby/moby/issues/10490#issuecomment-311892718

本质上,它配置 docker 将镜像保存在 RAM 中。它会做你想做的事,但如果你关闭,你就会丢失图像。

现在,我不确定你为什么会想要这样,但我会推断我认为你的需求可能是什么:

  • 您不希望在容器运行后出现任何跟踪:然后,添加将删除始终创建的--rm文件的标志。这可以让您的运行保持干净,但可能不完全安全。

  • 出于安全原因,您不希望将必须写入的任何数据保留在磁盘上:那么您将必须安装 tmpfs ( https://docs.docker.com/engine/reference/run/#tmpfs- mount-tmpfs-filesystems)在容器中的某个位置,并且只在那里写入。请记住,如果使用交换,内容将被写入磁盘,并且可能可以恢复。

  • 您希望快速读取容器中已存在的数据:那么我认为最好的选择是,当容器启动时,将需要快速访问的数据复制到安装在容器中的 tmpfs 中。

我希望我能抓住你的用例并提供帮助,如果没有,请这么说:)