moby/client
Stephen J Day 401778b7e2
client: deterministically resolve http scheme
The docker client has historically used Transport.TLSClientConfig to set
the scheme for the API client. A recent moved the resolution to use the
http.Transport directly, rather than save the TLSClientConfig state on a
client struct. This caused issues when mutliple calls made with a single
client would have this field set in the http package on pre-1.7
installations. This fix detects the presence of the TLSClientConfig once
and sets the scheme accordingly.

We still don't know why this issue doesn't happen with Go 1.7 but it
must be more deterministic in the newer version.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2016-10-11 15:53:14 -07:00
..
testdata Move engine-api client package 2016-09-07 11:05:58 -07:00
checkpoint_create.go Move engine-api client package 2016-09-07 11:05:58 -07:00
checkpoint_create_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
checkpoint_delete.go Move engine-api client package 2016-09-07 11:05:58 -07:00
checkpoint_delete_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
checkpoint_list.go Move engine-api client package 2016-09-07 11:05:58 -07:00
checkpoint_list_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
client.go client: deterministically resolve http scheme 2016-10-11 15:53:14 -07:00
client_mock_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
client_test.go client: pedantic checking of tlsconfig 2016-09-27 16:27:48 -07:00
client_unix.go Move engine-api client package 2016-09-07 11:05:58 -07:00
client_windows.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_attach.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_commit.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_commit_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_copy.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_copy_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_create.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_create_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_diff.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_diff_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_exec.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_exec_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_export.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_export_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_inspect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_inspect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_kill.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_kill_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_list.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_list_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_logs.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_logs_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_pause.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_pause_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_prune.go Add subcommand prune to the container, volume, image and system commands 2016-09-29 07:42:53 -07:00
container_remove.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_remove_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_rename.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_rename_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_resize.go Windows: OCI process struct convergence 2016-09-19 10:34:31 -07:00
container_resize_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_restart.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_restart_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_start.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_start_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_stats.go Windows: stats support 2016-09-16 11:56:15 -07:00
container_stats_test.go Merge pull request #26436 from stevvooe/remove-transport-package 2016-09-20 16:43:56 +02:00
container_stop.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_stop_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_top.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_top_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_unpause.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_unpause_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_update.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_update_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
container_wait.go Move engine-api client package 2016-09-07 11:05:58 -07:00
container_wait_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
disk_usage.go Add DiskUsage method to SystemApiclient 2016-09-29 07:42:53 -07:00
errors.go fix typo in client/errors.go comments 2016-10-08 15:29:32 +08:00
events.go Refactor to new events api 2016-09-22 14:42:06 -04:00
events_test.go Refactor to new events api 2016-09-22 14:42:06 -04:00
hijack.go client: pedantic checking of tlsconfig 2016-09-27 16:27:48 -07:00
image_build.go Windows: Support credential specs 2016-10-06 09:32:22 -07:00
image_build_test.go Merge pull request #26436 from stevvooe/remove-transport-package 2016-09-20 16:43:56 +02:00
image_create.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_create_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_history.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_history_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_import.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_import_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_inspect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_inspect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_list.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_list_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_load.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_load_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_prune.go Add subcommand prune to the container, volume, image and system commands 2016-09-29 07:42:53 -07:00
image_pull.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_pull_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_push.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_push_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_remove.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_remove_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_save.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_save_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_search.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_search_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
image_tag.go Move engine-api client package 2016-09-07 11:05:58 -07:00
image_tag_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
info.go Move engine-api client package 2016-09-07 11:05:58 -07:00
info_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
interface.go Add subcommand prune to the container, volume, image and system commands 2016-09-29 07:42:53 -07:00
interface_experimental.go Move engine-api client package 2016-09-07 11:05:58 -07:00
interface_stable.go Move engine-api client package 2016-09-07 11:05:58 -07:00
login.go Move engine-api client package 2016-09-07 11:05:58 -07:00
network_connect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
network_connect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
network_create.go Move engine-api client package 2016-09-07 11:05:58 -07:00
network_create_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
network_disconnect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
network_disconnect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
network_inspect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
network_inspect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
network_list.go Move engine-api client package 2016-09-07 11:05:58 -07:00
network_list_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
network_remove.go Move engine-api client package 2016-09-07 11:05:58 -07:00
network_remove_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
node_inspect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
node_inspect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
node_list.go Move engine-api client package 2016-09-07 11:05:58 -07:00
node_list_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
node_remove.go Move engine-api client package 2016-09-07 11:05:58 -07:00
node_remove_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
node_update.go Move engine-api client package 2016-09-07 11:05:58 -07:00
node_update_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
plugin_disable.go Move engine-api client package 2016-09-07 11:05:58 -07:00
plugin_disable_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
plugin_enable.go Move engine-api client package 2016-09-07 11:05:58 -07:00
plugin_enable_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
plugin_inspect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
plugin_inspect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
plugin_install.go Move engine-api client package 2016-09-07 11:05:58 -07:00
plugin_list.go Move engine-api client package 2016-09-07 11:05:58 -07:00
plugin_list_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
plugin_push.go Move engine-api client package 2016-09-07 11:05:58 -07:00
plugin_push_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
plugin_remove.go Move engine-api client package 2016-09-07 11:05:58 -07:00
plugin_remove_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
plugin_set.go Move engine-api client package 2016-09-07 11:05:58 -07:00
plugin_set_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
README.md Add GoDoc for client package 2016-10-10 09:27:07 +01:00
request.go client: deterministically resolve http scheme 2016-10-11 15:53:14 -07:00
request_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
service_create.go Move engine-api client package 2016-09-07 11:05:58 -07:00
service_create_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
service_inspect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
service_inspect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
service_list.go Move engine-api client package 2016-09-07 11:05:58 -07:00
service_list_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
service_remove.go Move engine-api client package 2016-09-07 11:05:58 -07:00
service_remove_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
service_update.go Move engine-api client package 2016-09-07 11:05:58 -07:00
service_update_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
swarm_init.go Move engine-api client package 2016-09-07 11:05:58 -07:00
swarm_init_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
swarm_inspect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
swarm_inspect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
swarm_join.go Move engine-api client package 2016-09-07 11:05:58 -07:00
swarm_join_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
swarm_leave.go Move engine-api client package 2016-09-07 11:05:58 -07:00
swarm_leave_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
swarm_update.go Move engine-api client package 2016-09-07 11:05:58 -07:00
swarm_update_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
task_inspect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
task_inspect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
task_list.go Move engine-api client package 2016-09-07 11:05:58 -07:00
task_list_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
transport.go client: deterministically resolve http scheme 2016-10-11 15:53:14 -07:00
version.go Move engine-api client package 2016-09-07 11:05:58 -07:00
volume_create.go Move engine-api client package 2016-09-07 11:05:58 -07:00
volume_create_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
volume_inspect.go Move engine-api client package 2016-09-07 11:05:58 -07:00
volume_inspect_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
volume_list.go Move engine-api client package 2016-09-07 11:05:58 -07:00
volume_list_test.go client: remove transport package 2016-09-19 11:19:55 -07:00
volume_prune.go Add subcommand prune to the container, volume, image and system commands 2016-09-29 07:42:53 -07:00
volume_remove.go Move engine-api client package 2016-09-07 11:05:58 -07:00
volume_remove_test.go client: remove transport package 2016-09-19 11:19:55 -07:00

Go client for the Docker Remote 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.