moby--moby/client
Ian Campbell 8c8457b0f2 client: do not fallback to GET if HEAD on _ping fail to connect
When we see an `ECONNREFUSED` (or equivalent) from an attempted `HEAD` on the
`/_ping` endpoint there is no point in trying again with `GET` since the server
is not responding/available at all.

Once vendored into the cli this will partially mitigate https://github.com/docker/cli/issues/1739
("Docker commands take 1 minute to timeout if context endpoint is unreachable")
by cutting the effective timeout in half.

Signed-off-by: Ian Campbell <ijc@docker.com>
2019-05-13 13:48:17 +01:00
..
testdata
README.md
build_cancel.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
build_prune.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
checkpoint_create.go
checkpoint_create_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
checkpoint_delete.go
checkpoint_delete_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
checkpoint_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
checkpoint_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
client.go Add client.WithAPIVersionNegotiation() option 2019-04-10 19:23:47 +02:00
client_deprecated.go
client_mock_test.go
client_test.go Add client.WithAPIVersionNegotiation() option 2019-04-10 19:23:47 +02:00
client_unix.go
client_windows.go
config_create.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
config_create_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
config_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
config_inspect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
config_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
config_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
config_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
config_remove_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
config_update.go
config_update_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_attach.go
container_commit.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_commit_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_copy.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_copy_test.go Use errdefs for handling errors in client 2019-03-16 00:42:42 +01:00
container_create.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_create_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_diff.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_diff_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_exec.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_exec_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_export.go
container_export_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_inspect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_kill.go
container_kill_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_logs.go
container_logs_test.go
container_pause.go
container_pause_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_prune.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_prune_test.go
container_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_remove_test.go
container_rename.go
container_rename_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_resize.go
container_resize_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_restart.go
container_restart_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_start.go
container_start_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_stats.go
container_stats_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_stop.go
container_stop_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_top.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_top_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_unpause.go
container_unpause_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_update.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_update_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_wait.go
container_wait_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
disk_usage.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
disk_usage_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
distribution_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
distribution_inspect_test.go
errors.go Keep old "notfound" interface for backward compatibility 2019-03-16 00:42:36 +01:00
events.go
events_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
hijack.go Add client.WithAPIVersionNegotiation() option 2019-04-10 19:23:47 +02:00
hijack_test.go
image_build.go builder-next: allow outputs configuration 2019-03-19 10:28:30 -07:00
image_build_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_create.go
image_create_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_history.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
image_history_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_import.go
image_import_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
image_inspect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
image_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_load.go
image_load_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_prune.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
image_prune_test.go
image_pull.go Use errdefs for handling errors in client 2019-03-16 00:42:42 +01:00
image_pull_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_push.go Use errdefs for handling errors in client 2019-03-16 00:42:42 +01:00
image_push_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
image_remove_test.go
image_save.go
image_save_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_search.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
image_search_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
image_tag.go
image_tag_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
info.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
info_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
interface.go api: add undocumented /grpc endpoint to talk to GRPC services 2019-04-02 19:57:59 +00:00
interface_experimental.go
interface_stable.go
login.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
network_connect.go
network_connect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
network_create.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
network_create_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
network_disconnect.go
network_disconnect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
network_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
network_inspect_test.go
network_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
network_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
network_prune.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
network_prune_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
network_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
network_remove_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
node_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
node_inspect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
node_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
node_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
node_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
node_remove_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
node_update.go
node_update_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
options.go Merge pull request #39032 from thaJeztah/improve_version_negotiation 2019-04-20 13:34:22 +02:00
options_test.go Add client.WithTimeout() option 2019-04-11 13:35:48 +02:00
ping.go client: do not fallback to GET if HEAD on _ping fail to connect 2019-05-13 13:48:17 +01:00
ping_test.go
plugin_create.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
plugin_disable.go
plugin_disable_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
plugin_enable.go
plugin_enable_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
plugin_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
plugin_inspect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
plugin_install.go Use errdefs for handling errors in client 2019-03-16 00:42:42 +01:00
plugin_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
plugin_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
plugin_push.go
plugin_push_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
plugin_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
plugin_remove_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
plugin_set.go
plugin_set_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
plugin_upgrade.go
request.go Add client.WithAPIVersionNegotiation() option 2019-04-10 19:23:47 +02:00
request_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
secret_create.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
secret_create_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
secret_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
secret_inspect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
secret_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
secret_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
secret_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
secret_remove_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
secret_update.go
secret_update_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
service_create.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
service_create_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
service_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
service_inspect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
service_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
service_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
service_logs.go
service_logs_test.go
service_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
service_remove_test.go
service_update.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
service_update_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
swarm_get_unlock_key.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
swarm_get_unlock_key_test.go
swarm_init.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
swarm_init_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
swarm_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
swarm_inspect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
swarm_join.go
swarm_join_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
swarm_leave.go
swarm_leave_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
swarm_unlock.go
swarm_unlock_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
swarm_update.go
swarm_update_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
task_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
task_inspect_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
task_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
task_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
task_logs.go
transport.go
utils.go
version.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
volume_create.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
volume_create_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
volume_inspect.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
volume_inspect_test.go
volume_list.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
volume_list_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
volume_prune.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
volume_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
volume_remove_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00

README.md

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.NewClientWithOpts(client.FromEnv)
	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.