func (c *Docker) FindContainers(filter map[string][]string) ([]*Container, error) { options := _docker.ListContainersOptions{ All: true, Size: true, } if filter != nil { options.Filters = filter } l, err := c.docker.ListContainers(options) if err != nil { return nil, err } out := []*Container{} for _, cc := range l { glog.V(100).Infoln("Matching", options, "Container==>", cc.Ports) c := &Container{ Id: cc.ID, Image: cc.Image, Command: cc.Command, Ports: get_ports(cc.Ports), docker: c.docker, } c.Inspect() out = append(out, c) } return out, nil }
func listContainers(client *docker.Client, all bool) (map[string]*docker.Container, error) { var opts docker.ListContainersOptions if all { opts.All = true } else { opts.Filters = map[string][]string{"status": []string{"running"}} } l, err := client.ListContainers(opts) if err != nil { return nil, err } m := make(map[string]*docker.Container, 0) for _, c := range l { info, err := client.InspectContainer(c.ID) if err != nil { DEBUG("failed to inspect container: %s", err) } m[info.Name] = info } return m, nil }