首页/云/Docker 容器速查/加固运行基线组合命令
资源与安全50 条

加固运行基线组合命令

把常用加固项组合成一个起点:非 root 用户 + 只读根文件系统 + tmpfs 可写目录 + 丢弃全部能力 + no-new-privileges + 资源与 PID 上限。

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

基线包含什么

这套组合把常见加固项放在一条命令里:以非 root 用户运行、根文件系统只读、需要写入的目录用 tmpfs、丢弃全部内核能力、禁止提权、限制内存与进程数。它适合无状态服务与静态站点类负载,也能一一映射到 Compose 的对应字段。上线前建议先跑观察模式,确认应用没有依赖额外的写入路径,再逐步收紧。

基本信息

组合项--user / --read-only / --tmpfs / --cap-drop / --security-opt no-new-privileges / --memory / --pids-limit
适用范围无状态服务、静态站点
验证方式docker inspect 查看 HostConfig 对应字段
落地方式可映射到 Compose 的同名字段
前提不使用特权模式、不挂载容器运行时套接字

典型使用场景

  • 新服务上线时的安全起点配置
  • 把既有服务逐步收敛到最小权限
  • 审计时作为对照基准,找出偏离项
  • 静态站点与只读服务的最简加固
  • 排查容器内不应发生的写入行为

组合命令与核实

组合命令与核实
docker run -d --name web --user 10001:10001 --read-only --tmpfs /tmp:size=64m --cap-drop=ALL --security-opt no-new-privileges --memory=512m --pids-limit=256 --restart=unless-stopped web/static:1.0
docker inspect -f '{{.HostConfig.ReadonlyRootfs}} {{.HostConfig.CapDrop}} {{.HostConfig.SecurityOpt}} {{.Config.User}}' web
docker logs web --tail=20        # 确认应用在只读根文件系统下能正常启动

加固项与常见冲突

加固项作用常见冲突
--read-only根文件系统只读应用需要临时文件或锁文件
--tmpfs为指定目录提供可写内存盘数据不持久化,重启即丢
--cap-drop=ALL清空内核能力需要绑定低端口或改文件属主
no-new-privileges禁止通过 setuid 提权少数依赖提权的工具会失败
--user以非 root 运行镜像内目录属主不匹配时写入失败
启用只读根文件系统前要做一次完整回归:时区缓存、临时目录、锁文件与日志目录都可能是写入点。
这套基线的前提是不挂载容器运行时套接字、不使用特权模式;把这两项加回去等于绕开了整组加固。
把这条命令与 Compose 的对应字段一起写进模板,新服务直接套用模板,比每次逐项配置更不容易遗漏。

易错点

  • 直接在生产上开只读:应用写临时文件失败导致启动异常,应先在观察模式跑一轮再收紧
  • 把 tmpfs 当成持久目录使用:重启后数据消失,需要持久化的内容必须放到卷里
  • --user 与镜像内目录属主不匹配:应用无法写入数据目录,报权限错误
  • 忽略健康检查与入口脚本的权限需求:它们可能以不同身份执行,加固项要覆盖这些路径

数据来源与参考

  • Docker 官方文档:Security(docs.docker.com/engine/security)及 docker run 对应参数
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌