我可以在WSL2中使用docker tmpfs在RAM上运行docker容器吗?

问题描述

docker tmpfs是否在wsl2上工作。
如果我在WSL2中运行它:

docker run -it --rm -e POSTGRES_PASSWORD=secret --tmpfs /var/lib/postgresql/data postgres:13-alpine sh

整个容器将在RAM中运行吗?

解决方法

根据您的第一个问题:“ docker tmpfs是否在wsl2上运行?” 看来答案是肯定的。实际上,尝试运行这样的容器:

$ docker run -it --name tmptest --mount type=tmpfs,destination=/mytmp busybox 

如果您随后检查该容器,则可以看到/mytmp 已正确安装为tmpfs

"Mounts": [
    {
        "Type": "tmpfs","Source": "","Destination": "/mytmp","Mode": "","RW": true,"Propagation": ""
    }
]

关于第二个问题的一些注释“整个容器将在RAM中运行吗?”

  1. 仅仅是存储在RAM中的文件夹/var/lib/postgresql/data的内容, 而不是“整个容器”

  2. 在我看来,您不是在运行数据库,而是在运行Shell。 因此,除非您从外壳启动数据库,否则我猜您将拥有 在RAM中拥有/var/lib/postgresql/data并没有什么特别的优势。

  3. 从技术上讲,任何程序都必须加载到RAM中 工作,或者至少是当前执行的部分。