// Wait blocks until the named container exits, returning the exit information. func Wait(client dockerclient.Client, name string) (*dockerclient.ContainerInfo, error) { defer func() { client.StopContainer(name, 5) client.KillContainer(name, "9") }() for attempts := 0; attempts < 5; attempts++ { done := client.Wait(name) <-done info, err := client.InspectContainer(name) if err != nil { return nil, err } if !info.State.Running { return info, nil } log.Debugf("attempting to resume waiting after %d attempts.\n", attempts) } return nil, errors.New("reached maximum wait attempts") }