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

Can I use docker tmpfs in WSL2 for running docker containers on RAM?

docker tmpfs 正在处理 wsl2。
如果我 运行 在 WSL2 中这样:

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

整个容器将 运行 在 RAM 中?

[编辑] 正如@Nik 所发现的,WSL 中的 tmpfs 当前映射到文件系统。在命令行级别,它在 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. 只是/var/lib/postgresql/data文件夹中存放在RAM中的内容, 不是 “整个容器” 无论你认为那是什么意思。

  2. 在我看来,您不是 运行 数据库,而是 shell。 所以,除非你从 shell 启动数据库,否则我想你会 /var/lib/postgresql/data 在 RAM 中没有特别的优势。

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