3

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

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

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

4

1 回答 1

3

[编辑] 正如@Nik 发现的那样,tmpfs在 WSL 中当前映射到文件系统。在命令行级别,它像在 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。/var/lib/postgresql/data所以,除非你从 shell 启动数据库,否则我猜你在 RAM中没有特别的优势。

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

于 2020-11-14T20:53:23.970 回答