Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pumba — 用于容器的混沌测试、网络模拟和压力测试工具 | Kitploit
工具/GitHubGitHub/alexei-led/pumba
容器安全DevSecOps混沌工程
GitHubalexei-led/pumba

pumba

用于容器的混沌测试、网络模拟和压力测试工具

查看仓库
3.1k21516小时5分前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Pumba
用于 Docker、containerd 和 Podman 的混沌测试工具

GitHub Release Release Build and Test Go Report Card Codecov License

快速开始 · 用户指南 · 网络混沌 · 部署 · 贡献


Pumba 是一款用于 Docker、containerd 和 Podman 容器的混沌测试与网络模拟工具。受到 Netflix Chaos Monkey 的启发,Pumba 将混沌工程带入容器层面——杀死、停止、暂停和删除容器,注入网络延迟和数据包丢失,或对容器资源进行压力测试。

工作原理

root@kitploit:~
graph LR
    A[Pumba CLI] -->|Docker API / containerd API / Podman compat API| B[Container Runtime]
    B -->|List & Filter| C[Target Containers]

    A -->|kill / stop / pause / rm| C

    A -->|netem / iptables| D[Helper Container / Direct Exec]
    D -->|Shares network namespace| C
    D -->|Runs tc / iptables| E[Network Chaos]

支持的运行时

支持的平台

Pumba 面向 Linux 容器——每个混沌操作都依赖 Linux 原语(netns、cgroups v2、iptables、tc qdisc、容器运行时 socket)。发布的二进制文件:

Windows 版本是有意不构建的。 混沌原语——Linux netns/cgroup 写入、tc/iptables sidecar 注入、POSIX 信号转发(containerd 运行时使用的 SIGCONT/SIGSTOP/SIGUSR1/SIGUSR2)——在 Windows 上没有对应实现。即使使用 Docker Desktop 的 WSL2 后端,Windows 也没有合理的用例,因此不发布 Windows 二进制文件。添加 Windows 支持的 PR 将不被接受;请在 Linux(原生、容器或 VM)上运行 pumba。

功能特性

快速开始

安装

为你的平台下载最新版本,或使用 Docker:

root@kitploit:~
# Binary
curl -sL https://github.com/alexei-led/pumba/releases/latest/download/pumba_linux_amd64 -o pumba
chmod +x pumba

# Docker (recommended)
docker pull ghcr.io/alexei-led/pumba:latest

首次混沌实验

root@kitploit:~
# Kill a random container matching "test" every 30 seconds
pumba --interval=30s --random kill "re2:^test"

# Add 3 seconds network delay to mydb for 5 minutes
pumba netem --duration 5m delay --time 3000 mydb

# Drop 10% of incoming packets to myapp for 2 minutes
pumba iptables --duration 2m loss --probability 0.1 myapp

# Stress CPU of mycontainer for 60 seconds
pumba stress --duration 60s --stressors="--cpu 4 --timeout 60s" mycontainer

containerd 运行时

root@kitploit:~
# Kill a container by ID via containerd
pumba --runtime containerd --containerd-namespace k8s.io kill <container-id>

# Add network delay via containerd (requires tc in the container image)
pumba --runtime containerd --containerd-namespace moby \
  netem --duration 5m delay --time 3000 <container-id>

Podman 运行时

Pumba 通过其 Docker 兼容 socket 与 Podman 通信。--podman-socket 是可选的——如果为空,pumba 会依次探测 $CONTAINER_HOST、$PODMAN_SOCK、podman machine inspect、/run/podman/podman.sock 和 $XDG_RUNTIME_DIR/podman/podman.sock。

root@kitploit:~
# Kill a container by name via Podman (rootful socket auto-detected)
sudo pumba --runtime podman kill mycontainer

# Add network delay via Podman (requires rootful socket)
sudo pumba --runtime podman netem --duration 5m delay --time 3000 mycontainer

# Stress CPU via Podman (default child-cgroup mode)
sudo pumba --runtime podman stress --duration 60s --stressors="--cpu 4 --timeout 60s" mycontainer

# Explicit socket override
pumba --runtime podman --podman-socket unix:///run/podman/podman.sock kill mycontainer

netem、iptables 和 stress 需要 rootful Podman——rootless 模式会快速失败,并给出明确消息,指向 podman machine set --rootful(macOS)或 rootful systemd 单元(Linux)。

使用 Podman 进行 macOS 开发

macOS 上的 Podman 运行在 Linux VM 内部。Pumba 必须与目标容器运行在同一内核上(读取宿主机侧的 /proc/<pid>/cgroup),因此请在 podman machine VM 内部运行 pumba 二进制文件:

root@kitploit:~
# one-time setup
brew install podman
podman machine init --rootful --cpus 4 --memory 4096 --now
podman machine ssh sudo dnf install -y bats      # optional, for bats tests

# copy a linux/arm64 or linux/amd64 pumba binary into the VM
podman machine ssh sudo cp /path/to/pumba /usr/local/bin/

# run inside the VM
podman machine ssh sudo pumba --runtime podman --log-level debug ps
podman machine ssh sudo pumba --runtime podman netem --duration 10s delay --time 200 <container-id>

提示: 对于没有 tc/iptables 的容器进行网络混沌实验时,使用 --tc-image 生成 sidecar:

root@kitploit:~
pumba --runtime containerd netem --tc-image ghcr.io/alexei-led/pumba-alpine-nettools:latest \
  --duration 5m delay --time 3000 <container-id>

使用 Docker 运行

root@kitploit:~
docker run -it --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  ghcr.io/alexei-led/pumba --interval=10s --random kill "re2:^test"

Docker 镜像

注册表镜像状态
GitHub Container Registryghcr.io/alexei-led/pumba✅ 主要
Docker Hubalexeiled/pumba⚠️ 已弃用

镜像为 linux/amd64 和 linux/arm64 原生构建(不使用 QEMU)。

文档

演示

asciicast

社区与支持

  • 问题:GitHub Issues
  • 博客:Pumba - 面向 Docker 的混沌测试

许可证

Apache License 2.0

下载工具
运行时Socket(默认)netem / iptables / stress备注
Docker/var/run/docker.sock以 root 身份或通过 socket 访问方式工作默认运行时。
containerd/run/containerd/containerd.sock需要 root 权限(sidecar 使用 overlayfs 挂载)命名空间:k8s.io(Kubernetes)、moby(Docker 管理)、default(纯 containerd)。
Podman/run/podman/podman.sock(rootful)需要 rootful Podman(否则快速失败)使用 Podman 的 Docker 兼容 API;在 macOS 上 pumba 运行于 podman machine 内部(见下文)。
操作系统amd64arm64备注
Linux✅✅主要目标平台。在与目标容器相同的内核上运行 pumba。
macOS✅✅仅面向开发者的便利性。用于驱动远程的 Docker/Podman/containerd VM(例如 Colima、podman machine)。
Windows❌❌不支持且无计划支持。 参见下文。
类别命令描述
容器混沌kill、stop、pause、rm、restart干扰容器生命周期
执行exec在容器内运行命令
网络延迟netem delay为出站流量添加延迟
数据包丢失netem loss、iptables loss丢弃数据包(出站和入站)
网络效应netem duplicate、corrupt、rate重复、损坏或限制数据包速率
压力测试stress通过 stress-ng 进行 CPU、内存、I/O 压力测试(子 cgroup 或同 cgroup 注入)
目标选择名称、正则(re2:)、标签、--random灵活的容器选择
调度--interval按固定间隔重复混沌实验
Flag默认值描述
--runtimedocker容器运行时(docker、containerd 或 podman)
--containerd-socket/run/containerd/containerd.sockcontainerd socket 路径
--containerd-namespacek8s.iocontainerd 命名空间(k8s.io 用于 Kubernetes,moby 用于 Docker)
--podman-socket(自动检测)Podman socket URI(例如 unix:///run/podman/podman.sock);留空时触发自动检测
文档描述
用户指南容器混沌命令、目标选择、调度、配置
网络混沌netem、iptables、高级场景、架构图
压力测试使用 stress-ng 进行 CPU/内存/IO 压力测试
部署Docker、Kubernetes DaemonSets、OpenShift
贡献从源码构建、运行测试、项目结构