我可以在 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 中?”:
只是/var/lib/postgresql/data
文件夹中存放在RAM中的内容,
不是 “整个容器” 无论你认为那是什么意思。
在我看来,您不是 运行 数据库,而是 shell。
所以,除非你从 shell 启动数据库,否则我想你会
/var/lib/postgresql/data
在 RAM 中没有特别的优势。
从技术上讲,任何程序都必须加载到 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 中?”:
只是
/var/lib/postgresql/data
文件夹中存放在RAM中的内容, 不是 “整个容器” 无论你认为那是什么意思。在我看来,您不是 运行 数据库,而是 shell。 所以,除非你从 shell 启动数据库,否则我想你会
/var/lib/postgresql/data
在 RAM 中没有特别的优势。从技术上讲,任何程序都必须加载到 RAM 中 工作,或者至少是当前执行的部分。