docker events 是什么
docker events 实时订阅 Docker 守护进程的事件流:容器创建、启动、退出、被杀、内存超限、健康状态变化,以及网络与卷的增删。它回答的是“这台机器刚刚发生了什么”,定位重启与异常退出比翻应用日志快得多。
基本信息
| 用途 | 订阅守护进程事件流,不是应用日志 |
|---|---|
| 语法 | docker events [--filter type=container] [--filter event=die] [--since / --until] |
| 典型事件 | create、start、die、kill、oom、health_status、destroy |
| 默认起点 | 从当前时刻开始,回看历史必须加 --since |
| 格式化 | --format '{{.Time}} {{.Action}} {{.Actor.Attributes.name}}' |
典型使用场景
- 排查容器为什么又重启了:订阅 die 事件并查看退出码
- 定位内存超限:订阅 oom 事件,直接对上被杀的时间点
- 观察健康状态:health_status 事件记录每次状态切换
- 审计操作:确认谁在什么时候删除了容器或网络
- 作为告警触发源:把事件流接入监控系统做实时通知
- 排查批量异常:用 --since 回看最近一小时的事件序列,找共同时间点
示例
示例
docker events # 实时订阅全部事件
docker events --filter type=container --filter event=die # 只看容器退出
docker events --since 1h --until 10m --filter event=oom # 回看一小时内的内存超限
docker events --format '{{.Time}} {{.Action}} {{.Actor.Attributes.name}}'常用事件与排查价值
| 事件 | 含义 | 排查价值 |
|---|---|---|
| create / start | 容器被创建、启动 | 确认部署是否真的执行到 |
| die | 容器退出,附带退出码 | 区分正常结束与异常崩溃 |
| kill | 容器被强制杀死 | 多为超时或人工干预 |
| oom | 内存超限触发 OOM | 对应内存限额与泄漏排查 |
| health_status | 健康状态发生变化 | 定位服务何时变得不可用 |
| destroy | 容器被删除 | 审计与误删排查 |
事件流只包含生命周期事件,不含业务日志,定位根因仍需配合 docker logs 与容器内日志一起看。
默认从当前时刻开始订阅,作为常驻进程运行时要用 --filter 收窄范围,否则事件量会刷满终端与磁盘。
退出码是 die 事件里的关键线索:137 多为内存超限或被强杀,143 是收到 SIGTERM 正常退出,126 与 127 指向命令不存在或不可执行。