直接运行 docker events 可实时监听 Docker 守护进程的所有系统级事件,支持 JSON 输出、时间范围筛选及多维度过滤,并可联动 logs、ps、inspect 辅助排错,还可通过脚本实现日志记录或崩溃告警。

直接运行 docker events 就能实时看到 Docker 守护进程触发的所有系统级事件,比如容器启动、停止、镜像拉取、网络创建等,不需要额外工具或配置。
基础监听:快速捕获全局操作流
在任意终端执行以下命令,即可持续输出 Docker 后台发生的各类动作:
-
docker events—— 默认人类可读格式,含时间、类型、对象ID和状态 -
docker events --json—— 输出标准 JSON,方便脚本解析或对接日志系统(如 ELK、Loki) -
docker events --since 1h—— 只显示过去 1 小时内发生的事件 -
docker events --until "2026-07-21T10:00:00"—— 截止到指定时间点的事件快照
精准过滤:聚焦关键行为
用 -f(或 --filter)按条件缩小范围,避免信息过载:
-
docker events -f event=start—— 仅显示容器启动事件 -
docker events -f event=die—— 捕获所有异常退出(对排查崩溃非常有用) -
docker events -f type=container—— 只看容器相关事件(排除镜像、网络、卷等干扰) -
docker events -f container=my-app—— 监控指定容器名或 ID 的全部动作 - 组合使用更实用:
docker events -f event=stop -f container=db --json
结合 logs 和 ps 辅助排错
events 提供的是“发生了什么”,要定位“为什么发生”,需联动其他命令:
- 看到
die事件后,立刻执行docker logs --tail 50 my-app查看末尾错误日志 - 运行
docker ps -a | grep my-app确认退出码(如Exit 1通常表示应用启动失败) - 用
docker inspect my-app检查配置是否正确(端口冲突、挂载路径不存在等常见原因)
轻量自动化响应示例
可以用 shell 脚本消费事件流,实现简单告警或记录:
- 写入本地日志:
docker events --json | while read event; do echo "$(date -Iseconds) $event" >> /var/log/docker-events.log; done - 检测崩溃并通知:
if echo "$event" | jq -e '.Action == "die"' > /dev/null; then echo "Crash on $(jq -r '.Actor.Attributes.name' <<< "$event")" | mail -s "Docker Alert" admin@example.com; fi - 注意:这类脚本建议用 systemd 或 supervisord 长期托管,确保不中断


















