进程数与 PID 限制
Fork 炸弹可耗尽宿主进程资源,下面介绍容器进程数限制方法。
--pids-limit 参数
Bash
# 限制容器最多 100 个进程
docker run -d --pids-limit=100 my-app
# 不限制(默认,不推荐)
docker run -d --pids-limit=-1 my-app
--pids-limit限制容器可创建的进程数,防止 Fork 炸弹攻击。
Fork 炸弹示例
Bash
# 危险的 Fork 炸弹(不要执行!)
:(){ :|:& };:
# 无限创建进程,耗尽 PID 资源
# 导致系统无法创建新进程
Compose 配置
YAML
version: '3.8'
services:
app:
image: my-app
deploy:
resources:
limits:
pids: 100
查看进程数
Bash
# 查看容器进程
docker top my-app
# 统计进程数
docker top my-app | wc -l
# 查看容器 PID 限制
docker inspect my-app | grep "PidsLimit"
# 输出
"PidsLimit": 100
更新限制
Bash
# 运行时更新
docker update --pids-limit=200 my-app
推荐配置
| 场景 | 推荐限制 |
|---|---|
| Web 服务 | 50-100 |
| Worker | 20-50 |
| 数据库 | 100-200 |
| 开发容器 | 200-500 |
进程监控
Bash
# 查看容器进程树
docker exec my-app ps auxf
# 查看进程限制
docker exec my-app cat /sys/fs/cgroup/pids/pids.max
# 输出
100
要点总结
--pids-limit限制容器进程数,防止 Fork 炸弹- 生产环境建议设置 50-200,根据应用类型调整
- Compose 通过
deploy.resources.limits.pids配置 docker top查看容器进程,docker inspect查看限制- 运行时可
docker update修改限制
📝 发现内容有误?点击此处直接编辑