1
0
mirror of https://github.com/docker/cli.git synced 2026-01-13 18:22:35 +03:00
Files
cli/components/engine/client
Brian Goff 1c3f338fb3 Fixes a race condition in client events monitoring
In cases where there is high latency (ie, not-local network)
`waitExitOrRemoved` was not receiving events for short-lived containers.
This caused the client to hang while waiting for a notification that the
container has stopped.

This happens because `client.Events()` returns immediately and spins a
goroutine up to process events. The problem here is it returns before
the request to the events endpoint is even made.
Even without high-latency issues, there is no guarantee that the
goroutine is even scheduled by the time the function returns.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 47585996bf72bcfde9ef058522059bef352e83e0
Component: engine
2016-12-16 10:11:53 -05:00
..
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-10-31 11:16:02 -04:00
2016-11-09 14:46:53 -08:00
2016-12-02 11:33:29 -08:00
2016-09-22 14:42:06 -04:00
2016-10-31 17:36:49 -04:00
2016-11-09 14:46:53 -08:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-11-21 13:11:40 -08:00
2016-11-21 13:11:40 -08:00
2016-12-02 15:23:08 -08:00
2016-10-24 15:20:01 -07:00
2016-11-22 12:49:38 +00:00
2016-11-09 14:27:45 -05:00
2016-11-09 14:27:45 -05:00
2016-11-10 13:46:02 -08:00
2016-11-10 13:46:02 -08:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00
2016-11-09 16:09:01 -08:00
2016-09-07 11:05:58 -07:00
2016-09-07 11:05:58 -07:00

Go client for the Docker Engine API

The docker command uses this package to communicate with the daemon. It can also be used by your own Go applications to do anything the command-line interface does  running containers, pulling images, managing swarms, etc.

For example, to list running containers (the equivalent of docker ps):

package main

import (
	"context"
	"fmt"

	"github.com/docker/docker/api/types"
	"github.com/docker/docker/client"
)

func main() {
	cli, err := client.NewEnvClient()
	if err != nil {
		panic(err)
	}

	containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{})
	if err != nil {
		panic(err)
	}

	for _, container := range containers {
		fmt.Printf("%s %s\n", container.ID[:10], container.Image)
	}
}

Full documentation is available on GoDoc.