7
7
"github.com/bcicen/ctop/connector/manager"
8
8
"github.com/bcicen/ctop/container"
9
9
"github.com/docker/docker/api/types"
10
+ "github.com/docker/docker/api/types/filters"
10
11
"github.com/docker/docker/api/types/network"
11
12
"github.com/docker/docker/client"
12
13
"github.com/docker/go-connections/nat"
@@ -19,7 +20,6 @@ import (
19
20
func init () { enabled ["docker" ] = NewDocker }
20
21
21
22
var actionToStatus = map [string ]string {
22
- "create" : "created" ,
23
23
"start" : "running" ,
24
24
"die" : "exited" ,
25
25
"stop" : "exited" ,
@@ -85,14 +85,20 @@ func (cm *Docker) Wait() struct{} { return <-cm.closed }
85
85
func (cm * Docker ) watchEvents () {
86
86
log .Info ("docker event listener starting" )
87
87
ctx := context .Background ()
88
- eventsOpts := types.EventsOptions {}
88
+ filter := filters .NewArgs ()
89
+ filter .Add ("type" , "container" )
90
+ filter .Add ("event" , "health_status" )
91
+ filter .Add ("event" , "create" )
92
+ filter .Add ("event" , "destroy" )
93
+ filter .Add ("event" , "start" )
94
+ filter .Add ("event" , "die" )
95
+ filter .Add ("event" , "stop" )
96
+ filter .Add ("event" , "pause" )
97
+ filter .Add ("event" , "unpause" )
98
+ eventsOpts := types.EventsOptions {Filters : filter }
89
99
events , _ := cm .client .Events (ctx , eventsOpts )
90
100
91
101
for e := range events {
92
- if e .Type != "container" {
93
- continue
94
- }
95
-
96
102
actionName := e .Action
97
103
// fast skip all exec_* events: exec_create, exec_start, exec_die
98
104
if strings .HasPrefix (actionName , "exec_" ) {
0 commit comments