我想在内存中运行整个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
但在这两种情况下,我都观察到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"
}
docker stats
还指出,这两种情况都使用默认映射策略。
有一个问题已经关闭,无法做到这一点。这是评论 https://github.com/moby/moby/issues/10490#issuecomment-311892718 的链接。
本质上,它配置码头工人将映像保存在RAM中。它会做你想做的事,但如果你关机,你会丢失你的图像。
现在,我不确定你为什么想要那个,但我会推断我认为你的需求可能是:
-
您希望在运行容器后不进行跟踪:然后,添加将删除将始终创建的文件的
--rm
标志。这样可以保持运行干净,但可能并不完全安全。 -
出于安全原因,您不希望将必须写入的任何数据保留在磁盘上:然后您必须在容器中的某个位置挂载 tmpfs (https://docs.docker.com/engine/reference/run/#tmpfs-mount-tmpfs-filesystems) 并且只在那里写入。请记住,如果使用交换,内容将被写入磁盘,并且可能可恢复。
您希望快速读取容器中 已存在的数据:那么我认为最好的选择是,当您的容器启动时,要将您需要快速访问的数据复制到容器中挂载的 tmpfs 中。
我希望我抓住了您的用例并有所帮助,如果没有,请:)说
出来