automation-tests/vendor/github.com/fsouza/go-dockerclient
TomSweeneyRedHat 8f418f1568 Vendor docker/docker, fsouza and more #2
Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>

Vendors in fsouza/docker-client, docker/docker and
a few more related. Of particular note, changes to the TweakCapabilities()
function from docker/docker along with the parse.IDMappingOptions() function
from Buildah. Please pay particular attention to the related changes in
the call from libpod to those functions during the review.

Passes baseline tests.
2019-03-13 11:40:39 -04:00
..
internal Vendor docker/docker, fsouza and more #2 2019-03-13 11:40:39 -04:00
DOCKER-LICENSE Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
LICENSE vendor: update everything 2019-01-11 13:38:11 +01:00
README.markdown Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
auth.go Vendor docker/docker, fsouza and more #2 2019-03-13 11:40:39 -04:00
change.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
client.go vendor: update everything 2019-01-11 13:38:11 +01:00
client_unix.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
client_windows.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
container.go vendor: update everything 2019-01-11 13:38:11 +01:00
distribution.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
env.go vendor: update everything 2019-01-11 13:38:11 +01:00
event.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
exec.go vendor: update everything 2019-01-11 13:38:11 +01:00
image.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
misc.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
network.go Vendor docker/docker, fsouza and more #2 2019-03-13 11:40:39 -04:00
plugin.go vendor: update everything 2019-01-11 13:38:11 +01:00
signal.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
swarm.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
swarm_configs.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
swarm_node.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
swarm_secrets.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
swarm_service.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
swarm_task.go Use buildah commit and bud in podman 2018-04-27 20:51:07 +00:00
tar.go vendor: update everything 2019-01-11 13:38:11 +01:00
tls.go Vendor docker/docker, fsouza and more #2 2019-03-13 11:40:39 -04:00
volume.go vendor: update everything 2019-01-11 13:38:11 +01:00

README.markdown

go-dockerclient

Travis Build Status AppVeyor Build Status GoDoc

This package presents a client for the Docker remote API. It also provides support for the extensions in the Swarm API.

This package also provides support for docker's network API, which is a simple passthrough to the libnetwork remote API. Note that docker's network API is only available in docker 1.8 and above, and only enabled in docker if DOCKER_EXPERIMENTAL is defined during the docker build process.

For more details, check the remote API documentation.

Example

package main

import (
	"fmt"

	"github.com/fsouza/go-dockerclient"
)

func main() {
	endpoint := "unix:///var/run/docker.sock"
	client, err := docker.NewClient(endpoint)
	if err != nil {
		panic(err)
	}
	imgs, err := client.ListImages(docker.ListImagesOptions{All: false})
	if err != nil {
		panic(err)
	}
	for _, img := range imgs {
		fmt.Println("ID: ", img.ID)
		fmt.Println("RepoTags: ", img.RepoTags)
		fmt.Println("Created: ", img.Created)
		fmt.Println("Size: ", img.Size)
		fmt.Println("VirtualSize: ", img.VirtualSize)
		fmt.Println("ParentId: ", img.ParentID)
	}
}

Using with TLS

In order to instantiate the client for a TLS-enabled daemon, you should use NewTLSClient, passing the endpoint and path for key and certificates as parameters.

package main

import (
	"fmt"

	"github.com/fsouza/go-dockerclient"
)

func main() {
	endpoint := "tcp://[ip]:[port]"
	path := os.Getenv("DOCKER_CERT_PATH")
	ca := fmt.Sprintf("%s/ca.pem", path)
	cert := fmt.Sprintf("%s/cert.pem", path)
	key := fmt.Sprintf("%s/key.pem", path)
	client, _ := docker.NewTLSClient(endpoint, cert, key, ca)
	// use client
}

If using docker-machine, or another application that exports environment variables DOCKER_HOST, DOCKER_TLS_VERIFY, DOCKER_CERT_PATH, you can use NewClientFromEnv.

package main

import (
	"fmt"

	"github.com/fsouza/go-dockerclient"
)

func main() {
	client, _ := docker.NewClientFromEnv()
	// use client
}

See the documentation for more details.

Developing

All development commands can be seen in the Makefile.

Commited code must pass:

Running make test will check all of these. If your editor does not automatically call gofmt -s, make fmt will format all go files in this repository.

Vendoring

go-dockerclient uses dep for vendoring. If you're using dep, you should be able to pick go-dockerclient releases and get the proper dependencies.

With other vendoring tools, users might need to specify go-dockerclient's dependencies manually.

Using with Docker 1.9 and Go 1.4

There's a tag for using go-dockerclient with Docker 1.9 (which requires compiling go-dockerclient with Go 1.4), the tag name is docker-1.9/go-1.4.

The instructions below can be used to get a version of go-dockerclient that compiles with Go 1.4:

% git clone -b docker-1.9/go-1.4 https://github.com/fsouza/go-dockerclient.git $GOPATH/src/github.com/fsouza/go-dockerclient
% git clone -b v1.9.1 https://github.com/docker/docker.git $GOPATH/src/github.com/docker/docker
% go get github.com/fsouza/go-dockerclient