Files
moby/client
Laura Brehm 5c72a95a30 client: prevent idle connections leaking FDs
Patch from af6ada910f

Without this change, if a long-lived process uses the client and creates
connections, these connections are not released and grow over time.

We can also look into addressing this issue from the server side, but it
doesn't hurt for the `client` package to have good defaults and not
cause this.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
2024-10-23 16:14:10 +01:00
..
2023-09-07 18:38:19 +00:00
2023-05-19 20:38:51 +02:00
2024-08-07 13:48:54 +02:00
2024-03-22 13:06:43 +01:00
2024-03-22 13:06:43 +01:00
2024-03-22 13:06:43 +01:00
2022-07-29 23:05:15 +02:00
2023-06-29 00:25:21 +02:00
2023-09-07 18:38:19 +00:00
2024-02-23 14:25:52 +01:00
2024-03-22 13:06:43 +01:00
2023-11-14 12:27:35 +01: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 all containers (the equivalent of docker ps --all):

package main

import (
	"context"
	"fmt"

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

func main() {
	apiClient, err := client.NewClientWithOpts(client.FromEnv)
	if err != nil {
		panic(err)
	}
	defer apiClient.Close()

	containers, err := apiClient.ContainerList(context.Background(), container.ListOptions{All: true})
	if err != nil {
		panic(err)
	}

	for _, ctr := range containers {
		fmt.Printf("%s %s (status: %s)\n", ctr.ID, ctr.Image, ctr.Status)
	}
}

Full documentation is available on pkg.go.dev.