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 上工作。
如果我在 WSL2 中运行它:
docker run -it --rm -e POSTGRES_PASSWORD=secret --tmpfs /var/lib/postgresql/data postgres:13-alpine sh
整个容器会在 RAM 中运行吗?
[编辑] 正如@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 中运行?”的一些注释 :
它只是/var/lib/postgresql/data
存储在 RAM 中的文件夹的内容,而不是您认为的“整个容器” 。
在我看来,您不是在运行数据库,而是在运行 shell。/var/lib/postgresql/data
所以,除非你从 shell 启动数据库,否则我猜你在 RAM中没有特别的优势。
从技术上讲,任何程序都必须加载到 RAM 中才能工作,或者至少是当前执行的部分。