用 tmpfs 挂载敏感凭证可确保其仅驻留内存、不落磁盘,容器停止即清空;需指定专用路径(如 /run/secrets)、设置 mode=0400/0600 权限、uid/gid 限定访问者,并启用 noexec,nosuid 及 size 限制防 oom。
用 tmpfs mount 把敏感凭证放进内存,核心是让密钥、令牌这类数据只存在 ram 里,不写到磁盘,容器一停就清空,从根本上防泄露。
明确挂载路径和权限控制
选一个容器内专用目录存放凭证,比如 /run/secrets 或 /etc/creds,避免混用系统默认路径(如 /tmp 可能被其他进程访问)。挂载时必须设好权限,防止非授权读取:
- 用 mode=0400 或 mode=0600 限制文件仅属主可读(甚至不可写)
- 配合 uid 和 gid 指定运行应用的用户 ID,确保只有目标进程能访问
- 加上 noexec,nosuid,禁止执行文件和提权操作,加固运行时安全
限制大小防止内存耗尽
tmpfs 占用的是主机物理内存或 swap,不设上限可能拖垮整台机器。必须用 size 参数硬性约束:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- 例如 size=16m 足够放几十个 JWT 密钥或 API token
- 支持后缀 k、m、g,也支持百分比写法如 size=2%
- 生产环境建议按实际凭证体积预留 2–3 倍空间,避免写满触发 OOM
配合容器启动流程注入凭证
不能把密钥直接写进镜像或通过环境变量传——都可能被 ps 或日志捕获。正确做法是启动时挂载 + 应用主动读取:
- 用 docker run --tmpfs 启动: docker run --tmpfs /run/secrets:rw,mode=0400,uid=1001,gid=1001,size=8m nginx
- 在容器内用 init 脚本把密钥从宿主机安全位置(如 HashiCorp Vault sidecar、K8s Secret volume)复制进该 tmpfs 目录
- 应用启动后只从该路径加载凭证,不缓存到磁盘或日志
验证是否真正落内存、不落盘
部署后快速确认是否生效:
- 进容器执行 mount | grep tmpfs,检查挂载点、选项(特别是 size 和 mode)是否匹配
- 写个测试文件后执行 find /proc/*/maps -name "*tmpfs*" 2>/dev/null | head -1,确认映射在内存页缓存中
- 停掉容器再启动新实例,原 tmpfs 内容应完全消失,证明无持久化残留










