在 docker-compose.yml 中启用 tmpfs 挂载需在服务的 volumes 下嵌套 type: tmpfs、target 和可选 tmpfs.size/tmpfs.mode,支持 noexec/nosuid/nodev 等安全参数,等效于 docker run --tmpfs。
在 docker-compose.yml 中启用 tmpfs 挂载,需使用 volumes 下的 tmpfs 子配置项(注意:不是放在顶层 volumes: 命名卷定义区),直接为服务指定内存挂载路径和参数。
基本语法与必需字段
tmpfs 配置必须嵌套在具体服务的 volumes 列表中,采用键值对形式,其中 type: tmpfs 是强制项,target 指定容器内挂载路径:
- type: tmpfs —— 明确声明挂载类型
-
target —— 容器内绝对路径,如
/tmp或/run/secrets -
tmpfs.size —— 推荐设置,单位支持
k、m、g(如64m) -
tmpfs.mode —— 可选,八进制权限(如
1777适用于临时目录)
完整 docker-compose.yml 示例
以下配置启动一个 Nginx 容器,并将 /var/cache/nginx 和 /tmp 均设为 tmpfs:
version: '3.8'
services:
web:
image: nginx:alpine
container_name: nginx-tmpfs
tmpfs:
- /tmp:rw,noexec,nosuid,size=32m
- /var/cache/nginx:rw,noexec,nosuid,size=64m
⚠️ 注意:Docker Compose 从 v3.6 起支持 tmpfs 顶层字段(如上),比旧版 volumes + driver: local 更简洁直观。该写法等效于 docker run --tmpfs 命令。
高级参数控制(推荐组合)
除大小外,安全加固参数可直接拼接在路径后(冒号分隔),常见组合包括:
-
noexec—— 禁止执行任何二进制文件,防恶意脚本落地运行 -
nosuid—— 忽略 setuid/setgid 位,避免提权风险 -
nodev—— 禁止创建设备文件,防止绕过沙箱 -
mode=1770—— 设置粘滞位+组可写,适合多用户临时目录
验证与调试方法
启动后进入容器检查挂载是否生效:
docker exec -it nginx-tmpfs sh -c "mount | grep tmpfs" # 输出示例:tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,relatime,size=32768k)
同时确认目录权限与大小限制已按预期应用,避免遗漏 size 导致内存无上限占用。











