docker events 到底有哪些事件、字段长什么样、怎么过滤、能回看多久?这篇用一轮完整的操作把事件按顺序列出来,并测出历史回看的上限。
操作:创建卷和网络、给镜像打 tag、run --rm 一个挂卷并接网络的容器、删 tag、删卷和网络
这段时间 docker events 共 15 条,其中和这次实验相关的 15 条
volume create bwlab-c69v
network create bwlab-c69n
image tag bwlab-c69-tagged:1
container create bwlab-c69c
container attach bwlab-c69c
volume mount bwlab-c69v
network connect bwlab-c69n
container start bwlab-c69c
network disconnect bwlab-c69n
volume unmount bwlab-c69v
container die bwlab-c69c
container destroy bwlab-c69c
image untag bwlab-c69-tagged:1
volume destroy bwlab-c69v
network destroy bwlab-c69n容器 create、attach、start、die、destroy;卷 create、mount、unmount、destroy;网络 create、connect、disconnect、destroy;镜像 tag、untag。--rm 的容器 die 之后紧跟着 destroy。
顶层字段:['Action', 'Actor', 'Type', 'scope', 'time', 'timeNano'] Actor.Attributes 里有:['bwlab', 'desktop.docker.io/ports.scheme', 'image', 'name'] time=1791639558(秒)timeNano=1791639558413056755(纳秒)
JSON 格式下每条事件有 Type、Action、Actor(含 ID 和 Attributes)、scope、time、timeNano。容器的 Actor.Attributes 带 name、image 和镜像/容器上的标签,可以用来按标签过滤。
--filter type=network:network/create ; network/connect ; network/disconnect ; network/destroy --filter type=container --filter event=die:container/die --filter container=bwlab-c69c2 --filter event=start --filter event=die:container/start ; container/die
--filter type=…、event=…、container=… 可以组合。过滤的是 docker events 命令的输出,不影响 docker 记录事件。
--since 1h 能取到 256 条;最早的是 232 秒前 --since 24h 能取到 256 条;最早的是 3 分钟前
--since 无论写 1h 还是 24h,都只拿到 256 条。想长期保留事件,要用 docker events 持续订阅并自己存储。