1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #2773 from dotcloud/speed_up_docker_ps

speedup docker ps
This commit is contained in:
Guillaume J. Charmes 2013-11-20 10:40:03 -08:00
commit b4f7078a02

View file

@ -650,6 +650,12 @@ func (srv *Server) Containers(all, size bool, n int, since, before string) []API
var displayed int var displayed int
out := []APIContainers{} out := []APIContainers{}
names := map[string][]string{}
srv.runtime.containerGraph.Walk("/", func(p string, e *gograph.Entity) error {
names[e.ID()] = append(names[e.ID()], p)
return nil
}, -1)
for _, container := range srv.runtime.List() { for _, container := range srv.runtime.List() {
if !container.State.Running && !all && n == -1 && since == "" && before == "" { if !container.State.Running && !all && n == -1 && since == "" && before == "" {
continue continue
@ -670,25 +676,17 @@ func (srv *Server) Containers(all, size bool, n int, since, before string) []API
break break
} }
displayed++ displayed++
c := createAPIContainer(container, size, srv.runtime) c := createAPIContainer(names[container.ID], container, size, srv.runtime)
out = append(out, c) out = append(out, c)
} }
return out return out
} }
func createAPIContainer(container *Container, size bool, runtime *Runtime) APIContainers { func createAPIContainer(names []string, container *Container, size bool, runtime *Runtime) APIContainers {
c := APIContainers{ c := APIContainers{
ID: container.ID, ID: container.ID,
} }
names := []string{}
runtime.containerGraph.Walk("/", func(p string, e *gograph.Entity) error {
if e.ID() == container.ID {
names = append(names, p)
}
return nil
}, -1)
c.Names = names c.Names = names
c.Image = runtime.repositories.ImageName(container.Image) c.Image = runtime.repositories.ImageName(container.Image)
c.Command = fmt.Sprintf("%s %s", container.Path, strings.Join(container.Args, " ")) c.Command = fmt.Sprintf("%s %s", container.Path, strings.Join(container.Args, " "))
c.Created = container.Created.Unix() c.Created = container.Created.Unix()