docker events 命令用于监听 Docker 守护进程的实时系统事件(如容器启停、服务更新等),非应用日志;需用 docker service logs 查看服务输出内容。

docker events 命令本身不获取“服务日志”,而是监听 Docker 守护进程产生的实时事件流(如容器启动、停止、镜像拉取、网络创建等),它和 docker logs 或 docker service logs 有本质区别。想看某个服务的输出内容,该用 docker service logs;而 docker events 是用来观察 Docker 系统行为的“操作审计流”。
明确用途:events 是系统事件,不是应用日志
它输出的是 Docker 引擎内部触发的事件,格式类似:
2024-06-10T09:23:41.123456789Z container start 1a2b3c4d (image=nginx:alpine, name=myweb)
常见事件类型包括:container、image、network、volume、daemon、service(Swarm 模式下)等。
基础用法:监听所有实时事件
直接运行即可开始流式输出:
-
docker events—— 持续监听,Ctrl+C 结束 -
docker events --since 10m—— 查看过去 10 分钟内的事件(适合排查刚发生的问题) -
docker events --until '2024-06-10T09:30:00'—— 截止到指定时间
过滤关注的服务或容器事件
Swarm 模式下,服务相关事件属于 service 类型,可用 --filter 精准捕获:
-
docker events --filter event=start --filter type=service—— 只看服务启动事件 -
docker events --filter type=service --filter label=com.docker.stack.namespace=myapp—— 按 Stack 命名空间过滤(适用于docker stack deploy部署的服务) -
docker events --filter type=container --filter label=com.docker.swarm.service.name=myweb—— 查看某服务下容器的生命周期事件(注意:label 需存在,Swarm 自动添加)
配合 JSON 格式与工具做简单分析
加 --format '{{json .}}' 输出结构化 JSON,方便用 jq 处理:
-
docker events --format '{{json .}}' | jq 'select(.Type=="service" and .Action=="update")'—— 筛选服务更新事件 -
docker events --since 5m --format 'Time: {{.Time}}, Type: {{.Type}}, Action: {{.Action}}, ID: {{.ID}}' | head -10—— 自定义易读格式,查最近 10 条
不复杂但容易忽略:它不显示容器内 stdout/stderr 的内容,只是告诉你“某容器在何时被创建/启动/退出”。要查服务实际打印了什么,始终用 docker service logs <service_name>。


















