48 lines
819 B
Go
48 lines
819 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"github.com/docker/docker/api/types"
|
|
"github.com/docker/docker/client"
|
|
"log"
|
|
"sync"
|
|
)
|
|
|
|
var (
|
|
store map[string]Dumper
|
|
lock sync.Mutex
|
|
)
|
|
|
|
func init() {
|
|
store = make(map[string]Dumper)
|
|
}
|
|
|
|
func storeContainers(c *client.Client, containers []types.Container) {
|
|
lock.Lock()
|
|
defer lock.Unlock()
|
|
|
|
for _, container := range containers {
|
|
delete(store, container.ID)
|
|
}
|
|
|
|
for _, container := range containers {
|
|
if container.State != "running" {
|
|
continue
|
|
}
|
|
|
|
info, err := c.ContainerInspect(context.Background(), container.ID)
|
|
if err != nil {
|
|
log.Fatalf("Could not get Container info: %s", err)
|
|
}
|
|
|
|
dumper := NewDumperFromContainer(&info)
|
|
if dumper == nil {
|
|
continue
|
|
}
|
|
|
|
log.Printf("Found container %s\n", container.Names)
|
|
|
|
store[container.ID] = dumper
|
|
}
|
|
}
|