1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00
moby--moby/client
Ian Campbell 61a234d562
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>
(cherry picked from commit 8c8457b0f2)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-05-13 15:17:51 -07:00
..
testdata Move engine-api client package 2016-09-07 11:05:58 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
checkpoint_create_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
checkpoint_delete.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Move deprecated client constructors to a separate file 2019-01-21 15:27:52 +01:00
client_mock_test.go Add canonical import comment 2018-02-05 16:51:57 -05:00
client_test.go Add client.WithAPIVersionNegotiation() option 2019-04-10 19:23:47 +02:00
client_unix.go Introduce NewClientWithOpts func to build custom client easily 2018-02-08 15:26:24 +01:00
client_windows.go Introduce NewClientWithOpts func to build custom client easily 2018-02-08 15:26:24 +01:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
config_update_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_attach.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Improve GetTimestamp parsing 2018-05-20 13:07:17 +02:00
container_logs_test.go Remove use of deprecated client.NewEnvClient() 2019-01-03 22:49:00 +01:00
container_pause.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Update tests to use gotest.tools 👼 2018-06-13 09:04:30 +02:00
container_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
container_remove_test.go Update tests to use gotest.tools 👼 2018-06-13 09:04:30 +02:00
container_rename.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
container_rename_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_resize.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
container_resize_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_restart.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
container_restart_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_start.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
container_start_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_stats.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
container_stats_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
container_stop.go Merge pull request #36874 from kolyshkin/stop-timeout 2018-05-30 13:38:42 -04:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Update tests to use gotest.tools 👼 2018-06-13 09:04:30 +02:00
errors.go Keep old "notfound" interface for backward compatibility 2019-03-16 00:42:36 +01:00
events.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Remove use of deprecated client.NewClient() 2019-01-28 17:08:54 +01:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Update tests to use gotest.tools 👼 2018-06-13 09:04:30 +02:00
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 Update tests to use gotest.tools 👼 2018-06-13 09:04:30 +02:00
image_save.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
interface_stable.go Add canonical import comment 2018-02-05 16:51:57 -05:00
login.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
network_connect.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Update tests to use gotest.tools 👼 2018-06-13 09:04:30 +02:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 15:17:51 -07:00
ping_test.go Add HEAD support for /_ping endpoint 2019-01-31 18:18:24 +01:00
plugin_create.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
plugin_disable.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
plugin_disable_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
plugin_enable.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
plugin_set_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
plugin_upgrade.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
README.md Remove use of deprecated client.NewEnvClient() 2019-01-03 22:49:00 +01:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Improve GetTimestamp parsing 2018-05-20 13:07:17 +02:00
service_logs_test.go Remove use of deprecated client.NewEnvClient() 2019-01-03 22:49:00 +01:00
service_remove.go Client: always call ensureReaderClosed 2019-03-18 15:26:21 +01:00
service_remove_test.go Update tests to use gotest.tools 👼 2018-06-13 09:04:30 +02:00
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 Update tests to use gotest.tools 👼 2018-06-13 09:04:30 +02:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
swarm_join_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
swarm_leave.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
swarm_leave_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
swarm_unlock.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
swarm_unlock_test.go Update tests to check returned errors 2019-03-16 00:40:55 +01:00
swarm_update.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
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 Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
transport.go Add canonical import comment 2018-02-05 16:51:57 -05:00
utils.go Add canonical import comment 2018-02-05 16:51:57 -05:00
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 Update tests to use gotest.tools 👼 2018-06-13 09:04:30 +02:00
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

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.