5

我正在尝试连接到 docker 事件总线以监听 swarm 上发生的各种事件,例如节点离开和加入集群、创建的服务等。问题。

  1. 是否有可能在群体级别获得此类信息?

  2. 如果是这样,是否dockerpy使用库来收听此类事件?

4

2 回答 2

2

来自 docker API 文档:https ://docs.docker.com/engine/api/v1.39

Docker 中的各种对象在发生某些事情时会报告事件。

容器报告这些事件:attach、commit、copy、create、destroy、detach、die、exec_create、exec_detach、exec_start、exec_die、export、health_status、kill、oom、pause、rename、resize、restart、start、stop、top、unpause , 并更新

服务报告这些事件:创建、更新和删除

节点报告这些事件:创建、更新和删除

并且来自 dockerpy 文档:https ://docker-py.readthedocs.io/en/stable/api.html?highlight=event

events(since=None, until=None, filters=None, decode=None)从服务器获取实时事件。类似于 docker events 命令。

参数:since (UTC datetime or int) – 从该点获取事件直到 (UTC datetime or int) – 获取到该点的事件 filters (dict) – 按事件时间、容器或图像解码过滤事件 (bool) – 如果设置为真,流将被即时解码为字典。默认为假。返回:一个 docker.types.daemon.CancellableStream 生成器

引发: docker.errors.APIError – 如果服务器返回错误。

于 2018-11-20T17:13:20.807 回答
0

基于 Docker 官方文档https://docs.docker.com/engine/reference/commandline/events/你可以使用:

docker events --filter 'scope=swarm'

如果你想在 dockerpy 中使用它,你可以使用:

import docker

client = docker.APIClient()

for event in client.events(decode=True, filters={"scope":"swarm"}):
   print(event)
于 2019-08-07T23:56:13.713 回答