The Docker CLI
Go to file
Stephen J Day e7678f3a37 client: pedantic checking of tlsconfig
Under the convoluted code path for the transport configuration,
TLSConfig was being set even though the socket type is unix. This caused
other code detecting the TLSConfig to assume https, rather than using
the http scheme. This led to a situation where if `DOCKER_CERT_PATH` is
set, unix sockets start reverting to https. There is other odd behavior
from go-connections that is also reproduced here.

For the most part, we try to reproduce the side-effecting behavior from
go-connections to retain the current docker behavior. This whole mess
needs to ripped out and fixed, as this pile spaghetti is unnacceptable.

This code is way to convoluted for an http client. We'll need to fix
this but the Go API will break to do it.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2016-09-27 16:27:48 -07:00
testdata Move engine-api client package 2016-09-07 11:05:58 -07:00
README.md Add a README to the client's package… 2016-09-12 11:41:11 +02: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: pedantic checking of tlsconfig 2016-09-27 16:27:48 -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_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
errors.go Move engine-api client package 2016-09-07 11:05:58 -07:00
events.go Move engine-api client package 2016-09-07 11:05:58 -07:00
events_test.go Merge pull request #26436 from stevvooe/remove-transport-package 2016-09-20 16:43:56 +02:00
hijack.go client: pedantic checking of tlsconfig 2016-09-27 16:27:48 -07:00
image_build.go Windows: stats support 2016-09-16 11:56:15 -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_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 Windows: stats support 2016-09-16 11:56:15 -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
request.go client: pedantic checking of tlsconfig 2016-09-27 16:27:48 -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: pedantic checking of tlsconfig 2016-09-27 16:27:48 -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_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

README.md

Client

The client package implements a fully featured http client to interact with the Docker engine. It's modeled after the requirements of the Docker engine CLI, but it can also serve other purposes.

Usage

You can use this client package in your applications by creating a new client object. Then use that object to execute operations against the remote server. Follow the example below to see how to list all the containers running in a Docker engine host:

package main

import (
	"fmt"

	"github.com/docker/docker/client"
	"github.com/docker/docker/api/types"
	"golang.org/x/net/context"
)

func main() {
	defaultHeaders := map[string]string{"User-Agent": "engine-api-cli-1.0"}
	cli, err := client.NewClient("unix:///var/run/docker.sock", "v1.22", nil, defaultHeaders)
	if err != nil {
		panic(err)
	}

	options := types.ContainerListOptions{All: true}
	containers, err := cli.ContainerList(context.Background(), options)
	if err != nil {
		panic(err)
	}

	for _, c := range containers {
		fmt.Println(c.ID)
	}
}