首页/云/Docker 容器速查/docker run --pids-limit 限制进程数
资源与安全50 条

docker run --pids-limit 限制进程数

限制容器内可创建的进程/线程总数:防止单个服务异常 fork 或线程失控把宿主调度资源耗尽。

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

限制进程数的意义

进程数上限限制容器内可创建的进程与线程总数,用来防止单个服务异常派生大量进程或线程,把宿主的调度资源耗尽。它属于资源限制体系里最容易被忽略的一项,却在容器内出现进程风暴时最先起作用。设置时要结合运行时的线程模型留出足够余量。

基本信息

用途限制容器内进程与线程总数
语法运行参数指定进程上限,取特定值表示不限
查看方式统计输出的进程数列,或检查命令的对应字段
计数口径线程同样计入
适用平台Linux 上的容器运行时

典型使用场景

  • 防止单个服务异常派生进程拖垮宿主
  • 作为加固基线的一部分与新服务一同上线
  • 排查容器内大量进程导致的宿主变慢
  • 压测后按峰值重新设定上限
  • 审计存量容器是否缺少该项限制

设置与核对

设置与核对
docker run -d --pids-limit=256 --name api app/api:1.4.2
docker stats --no-stream --format '{{.Name}} pids={{.PIDs}}' api     # 观察当前进程数
docker inspect -f '{{.HostConfig.PidsLimit}}' api                    # 核对设置值
docker exec api sh -c 'ls /proc | grep -c "^[0-9]"'                  # 容器内进程数量

方面与注意

方面说明注意
计数口径进程与线程合计线程模型重的运行时占用较高
取值建议按峰值上浮一定余量过小会在高并发时报错
不限取值取特定值表示不限加固场景不建议使用
保护范围仅限本容器宿主整体饱和仍会影响所有容器
线程也计入该限额:线程模型较重的运行时需要按峰值线程数放大余量,否则高并发时会以创建线程失败的形式报错。
宿主的进程总量饱和时全局都会受到影响,这一限制只保护单个容器这一层,属于纵深防御的一环。
编排文件里同样有对应的进程数上限字段,把限制写进文件,比只在手工命令里设置更容易长期保持一致。

易错点

  • 限额设得过小:服务在高并发时无法创建线程而报错,压测后应按峰值上浮
  • 忽略线程计数:只按进程数估算,实际线程占用远高于预期
  • 以为它能保护整机:宿主整体进程饱和时所有容器都会受影响
  • 只给新容器设置:历史遗留容器缺少这项限制,需要一并审计补齐

数据来源与参考

  • Docker 官方 CLI 参考:docker run --pids-limit(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌