docker events 是什么
docker events 订阅 Docker 守护进程的事件流,能看到容器的创建、启动、退出、停止,以及镜像拉取、网络与卷的变化。它的价值在于把『什么时候发生了什么』还原成时间线:排查容器被谁重启、什么时候挂掉、镜像是否被重新拉取这类问题时,比翻日志定位快得多。默认输出实时事件,用 --since 与 --until 可以回看指定时间窗口,但事件缓冲有限,久远的历史查不到。
基本信息
| 语法 | docker events [--filter] [--since] [--until] |
|---|---|
| 过滤条件 | --filter container=myapp、--filter event=die、--filter type=network |
| 时间窗口 | --since 1h --until 30m 用于回看历史区间 |
| 主要用途 | 抓取容器死亡与重启时序,与业务故障时间线对齐 |
| 能力边界 | 默认只保留有限缓冲,事件发生后应尽早查询 |
典型使用场景
- 容器无故重启,需要确认重启发生的准确时间点
- 排查『谁在重启我的容器』:是编排系统、脚本还是宿主上的定时任务
- 镜像被重新拉取导致运行版本变化,定位变更发生的时间
- 网络或卷被创建与删除引发的问题,确认变更动作的来源与顺序
- 把事件与业务监控的时间轴对齐,做故障复盘的时序还原
使用示例
使用示例
docker events --since 1h
docker events --filter container=myapp --since 2h
docker events --filter event=die
docker events --filter event=start --format '{{.Time}} {{.Actor.Attributes.name}}' # 只看启动事件
# 与容器日志、inspect 中的退出码结合,构成完整的时间线证据链常用事件类型
| 事件 | 含义 | 排查价值 |
|---|---|---|
| create | 容器被创建 | 确认是否有人手工或脚本新建容器 |
| start | 容器启动 | 判断重启发生的准确时间点 |
| die | 容器退出 | 与退出码结合定位崩溃原因 |
| stop | 收到停止指令 | 区分主动停止与异常退出 |
| pull / untag | 镜像拉取与解标签 | 定位镜像版本被替换的时间 |
| network / volume | 网络与卷发生变化 | 排查配置被改动或资源被清理 |
容器反复死亡时,用 events 看死亡时刻,用 logs 看应用输出,用 inspect 读出退出码与是否被内存限制杀死,三者组合定位最快。
事件流不是持久审计日志:只保留有限缓冲,守护进程重启后历史即清空。需要长期留存必须接入外部日志系统,否则事后追溯时会发现关键区间是空的。