You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker特权容器/run存储占满报错 自动清理配置及存储内容说明

问题解答

Docker容器内/run目录默认存储的数据类型

  • /run是Docker启动带systemd的特权容器时,自动为其挂载的tmpfs内存文件系统,存储介质是宿主机内存而非磁盘,这也是宿主机磁盘剩余充足时仍会触发空间占满报错的核心原因。
  • 该目录按Linux系统规范,只存储服务运行时的临时状态数据,默认包含:
    • systemd及所有托管服务(包括Apache)的PID文件、文件锁、Unix Domain Socket套接字文件
    • 服务运行时生成的短生命周期状态缓存、进程间临时通信文件
    • 部分系统组件的临时运行参数快照
  • 按设计逻辑,这类文件应该在对应进程退出、服务停止时自动删除,不会做持久化存储,容器重启时tmpfs会被直接重置清空,和观察到的重启后故障消失的现象完全匹配。

/run目录自动清理、避免空间占满的配置方案

该故障的核心诱因是容器内运行的进程(多为Apache或其子进程、异常退出的残留进程)没有遵循tmpfs文件规范,未自动删除退出后遗留的临时文件,或是运行中持续向/run写入无轮转的大体积文件,可通过三层配置彻底解决:

1. 启动容器时显式限制/run的tmpfs空间上限

Docker自动挂载的/run默认未配置合理的空间阈值,可在容器启动时通过显式tmpfs挂载参数设置最大可用空间,从资源层阻断占满问题:

docker run -d --privileged \
  --tmpfs /run:size=256m,mode=1777 \
  # 保留原有启动参数,如端口映射、数据卷挂载、启动命令
  centos:7 /usr/sbin/init

size=256m可根据Apache实际业务负载调整,常规Web服务场景下分配100M-500M即可满足需求,mode=1777为临时目录默认权限,无需修改。

2. 配置系统原生定时清理规则

利用CentOS7自带的systemd-tmpfiles服务配置自动清理规则,无需额外安装组件,即可定期清理过期文件:

  • 在/etc/tmpfiles.d/目录下新建清理配置文件run-clean.conf:
    # 清理/run目录下超过24小时未被访问的普通文件,排除正在使用的PID、锁、套接字文件
    d /run 1777 root root 1d
    
  • 执行systemd-tmpfiles --clean /etc/tmpfiles.d/run-clean.conf验证规则生效,该服务默认会在系统启动后每15分钟扫描一次,自动删除符合过期规则的文件。

如果习惯用crontab,也可以安装crond服务后添加定时任务:

# 每小时执行一次,删除/run下超过1天未访问的普通文件
0 * * * * /usr/bin/find /run -type f -atime +1 -delete >/dev/null 2>&1

3. 修正Apache的异常写入配置

排查Apache相关配置,从源头减少无效写入:

  • 检查Apache配置文件,确认日志文件、静态缓存、coredump文件的存储路径未指向/run目录,这类需要留存、体积会持续增长的文件必须存到持久化挂载的目录中
  • 配置Apache的服务停止钩子,确保服务重载、停止时自动删除/run下的残留临时文件
  • 关闭不必要的运行时调试输出,避免调试日志持续写入/run占满空间

内容的提问来源于stack exchange,提问作者Amarjit Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:18:19