docker-compose events 可实时监听容器全生命周期事件,支持默认格式、json输出及按服务/事件类型过滤,适用于问题排查与轻量级自动化响应。

直接用 docker-compose events 就能实时监听整个 Compose 项目中容器的创建、启动、停止、销毁等动作,不需要额外安装或配置。
基础监听:快速启动事件流
在项目根目录下运行以下命令,即可看到所有服务的实时事件:
-
docker-compose events—— 默认输出人类可读格式,含时间、服务名、事件类型和状态 -
docker-compose events --json—— 输出标准 JSON,适合脚本解析或接入监控系统 -
docker-compose events web api—— 只监听指定服务(如 web 和 api),减少干扰
精准过滤:按需聚焦关键事件
Events 命令支持通过服务名、事件类型等条件缩小范围:
-
--filter event=start或--filter event=die—— 只捕获启动或异常退出事件 -
--filter service=db—— 仅关注数据库服务相关动作 - 组合使用更有效,例如:
docker-compose events --filter event=stop --filter service=cache --json
实用场景:结合日志与状态排查问题
当发现服务反复重启时,events 是第一手线索:
- 看到连续出现
die→start循环,说明容器非正常退出 - 配合
docker-compose logs -f service_name查看具体错误输出 - 遇到
die事件后,立刻执行docker-compose ps service_name确认当前状态和退出码
进阶用法:轻量级自动化响应
用 shell 脚本消费事件流,实现简单告警或记录:
- 监听并写入日志:
docker-compose events --json | while read event; do echo "$(date): $event" >> /var/log/compose-events.log; done - 检测到
die事件时触发通知:if echo "$event" | jq -e '.action == "die"' > /dev/null; then echo "ALERT: $(jq -r '.service' - 注意:脚本需持续运行,建议用 systemd 或 supervisord 管理进程











