client.checkResponseErr() was hanging and consuming infinite memory when the serverResp.Body io.Reader returns infinite stream. This commit prohibits reading more than 1MiB. Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp> (cherry picked from commit 1db4be0c32267b7a8a27998089ce96440bed492e) Signed-off-by: Sebastiaan van Stijn <github@gone.nl> Upstream-commit: 49556e047059d81b64f6cd12f4c602c9a9c471c7 Component: engine
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)
}
}