写进内存的临时目录
把目录挂成内存态文件系统后,读写不经过磁盘,容器停止内容即消失。它适合临时缓存、大吞吐的小文件交换,以及不希望留在磁盘上的敏感中间数据。要紧的是它占用的是内存:写入量会计入容器内存用量,也会影响整机的内存水位,所以使用时应显式设定大小上限,避免某个容器把内存吃满。
基本信息
| 简写写法 | --tmpfs /tmp:rw,size=64m |
|---|---|
| 长格式 | --mount type=tmpfs,target=/tmp,tmpfs-size=64m,tmpfs-mode=1777 |
| 持久性 | 容器停止即清除,不落盘 |
| 资源归属 | 占用内存,计入容器内存用量 |
典型使用场景
- 临时目录加速:编译缓存与中间文件放在内存里,减少磁盘 IO
- 敏感数据处理:中间结果不落盘,容器停止后自动消失
- 只读根文件系统的配套:为需要写临时文件的应用开放最小可写区域
- 高并发小文件:会话临时数据与锁文件频繁读写
- 测试隔离:每次启动都从干净状态开始,不需要手工清理
挂载与容量验证
挂载与容量验证
# 简写形式,限制 64MB
docker run -d --tmpfs /tmp:rw,size=64m --name web app/web:1.0
# 长格式,语义更明确
docker run --rm --mount type=tmpfs,target=/tmp,tmpfs-size=64m,tmpfs-mode=1777 alpine df -h /tmp
# 验证容器停止后内容消失
docker exec web sh -c 'echo data > /tmp/probe'
docker restart web && docker exec web sh -c 'cat /tmp/probe || echo gone'挂载类型对照
| 类型 | 存储位置 | 数据持久性 |
|---|---|---|
| 具名卷 | 宿主磁盘 | 持久,独立于容器生命周期 |
| 绑定挂载 | 宿主指定目录 | 持久,由宿主目录管理 |
| tmpfs | 内存 | 容器停止即消失 |
| 容器可写层 | 宿主磁盘 | 随容器删除而消失 |
不设大小上限时按内核默认策略分配,容器大量写入会直接推高整机内存压力。
需要持久化的数据不要放在 tmpfs 上:容器重启后内容无法恢复,只能重新生成。
结合只读根文件系统使用时,通常的做法是根目录只读,再用 tmpfs 开放临时目录、运行目录这两个最小的可写区域,既能跑起来又不需要给整个文件系统放开写权限。