首页/云/云与容器速查/tmpfs 内存临时挂载
容器与 Docker106 条

tmpfs 内存临时挂载

把目录挂到宿主内存:读写极快、容器停止即消失,适合密钥、会话、高频小文件等不需要落盘的数据;容量计入宿主内存,开太大有 OOM 风险。

云与容器速查云更新于 2026-10-13

tmpfs 挂载是什么

tmpfs 把容器里的某个目录挂到宿主内存上:读写不经过磁盘,速度快,容器停止后内容自动清空,也不会写进容器的可写层。它适合放密钥、会话文件、高频小文件缓存这类“不需要持久化”的数据,也常用来给 /dev/shm 扩容。代价是容量来自宿主内存,写得多会把压力转移到宿主机上,因此容量必须显式规划,不能当成免费空间随意开大。

基本信息

语法docker run --tmpfs /tmp:size=256m,mode=1777 镜像
mount 形式--mount type=tmpfs,dst=/cache,tmpfs-size=64m,tmpfs-mode=0700
适用平台仅 Linux 容器;Windows 容器不支持 tmpfs 挂载
生命周期随容器存在,容器停止或删除后内容消失,不落磁盘
容量不写 size 表示不加限制,写入量直接消耗宿主内存
与数据卷区别数据卷落宿主磁盘可持久;tmpfs 只在内存里,重启即清

典型使用场景

  • 把运行期生成的密钥或令牌放内存,避免落盘与进入镜像层
  • 会话文件与短期缓存:读得频繁但丢了可以重建
  • 给 /dev/shm 扩容,解决默认 64MB 不够导致的崩溃
  • 高频小文件写入场景:避免拖慢宿主机磁盘与影响其他业务
  • 合规要求不留痕的临时数据,容器销毁即无残留

使用示例

使用示例
docker run -d --name app --tmpfs /tmp:size=256m,mode=1777 nginx:1.27   # 临时目录走内存
docker run --rm --mount type=tmpfs,dst=/run/cache,tmpfs-size=64m,tmpfs-mode=0700 alpine sh -c 'df -h /run/cache'   # mount 写法
docker run -d --memory=512m --tmpfs /tmp:size=128m myapp:1.2.3   # 与内存限制一起做容量规划
docker exec app df -h /tmp   # 容器内确认挂载与容量
docker inspect --format '{{json .HostConfig.Tmpfs}}' app   # 复核实际挂载参数

挂载方式对照

方式持久性存放位置典型用途
tmpfs容器停止即无宿主内存密钥、会话、缓存
匿名卷容器删除即无宿主磁盘镜像内声明的临时目录
命名卷持久,可跨容器复用宿主磁盘数据库与业务数据
绑定挂载持久,直连宿主路径宿主磁盘指定路径配置与日志目录
tmpfs 消耗的是宿主内存:容量设得大、写入又多时,压力落在宿主机上,可能先出现整机内存紧张,而不是容器被判定为内存超限。
Windows 容器不支持 tmpfs 挂载:跨平台项目要准备替代方案,例如应用层缓存目录或显式声明内存盘。

易错点

  • 把需要持久化的数据放 tmpfs:容器一重启数据全丢,误判为程序缺陷
  • tmpfs 容量设得过大:宿主内存被写满,牵连同宿主上的其他容器与进程
  • 误以为 tmpfs 完全等价于数据卷:文件权限、属主与共享方式都不一样
  • 在 Windows 容器上使用 tmpfs 参数:容器启动直接失败
  • 忘记显式设置 mode:默认权限与应用期望不符,出现难以理解的读写失败

数据来源与参考

  • Docker Docs:tmpfs mounts

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌