VSCode Devcontainers中/tmp目录大小受限的原因及配置位置
问题解答
1. /tmp被限制为11G的原因
tmpfs是基于内存的文件系统,Docker中tmpfs的默认大小为主机可用内存的50%。你的主机内存约为22G,因此/tmp自动获得11G的空间上限。写入/tmp的文件会直接占用主机内存,这就是你观察到内存占用上升的原因。
2. /tmp映射为tmpfs的配置位置
该tmpfs挂载确实由Docker-in-Docker(DIND)扩展自动添加。扩展在初始化Dev Container时,默认会将/tmp配置为tmpfs以提升临时文件的读写效率。这个配置并非来自你的项目devcontainer.json,而是扩展自带的容器启动模板。
解决方案:切换为overlay文件系统的/tmp
要禁用tmpfs挂载,让/tmp使用容器的overlay文件系统(受硬盘空间限制),修改项目的.devcontainer/devcontainer.json即可:
方法1:通过mounts配置覆盖默认设置
在devcontainer.json中添加以下配置,强制/tmp使用容器本地文件系统:
"mounts": [ "type=bind,source=/tmp,target=/tmp,bind-propagation=rshared" ]
方法2:通过runArgs禁用tmpfs限制
添加runArgs配置,指定/tmp不使用带大小限制的tmpfs:
"runArgs": [ "--tmpfs=/tmp:size=0" ]
size=0会让Docker自动放弃tmpfs挂载逻辑,转而使用容器的overlay文件系统。
修改完成后,重新构建并启动Dev Container,此时/tmp的空间限制将由宿主机硬盘容量决定。
内容的提问来源于stack exchange,提问作者Daniel Habenicht
相关产品推荐
相关产品推荐

