6fe2703665
* Remove `make updatedeps` from Travis build. We'll follow up with more specific plans around dependency updating in subsequent PRs. * Update all `make` targets to set `GO15VENDOREXPERIMENT=1` and to filter out `/vendor/` from `./...` where appropriate. * Temporarily remove `vet` from the `make test` target until we can figure out how to get it to not vet `vendor/`. (Initial experimentation failed to yield the proper incantation.) Everything is pinned to current master, with the exception of: * Azure/azure-sdk-for-go which is pinned before the breaking change today * aws/aws-sdk-go which is pinned to the most recent tag The documentation still needs to be updated, which we can do in a follow up PR. The goal here is to unblock release. |
||
---|---|---|
.. | ||
external | ||
testing | ||
.gitignore | ||
.travis.yml | ||
auth_test.go | ||
auth.go | ||
AUTHORS | ||
build_test.go | ||
change_test.go | ||
change.go | ||
client_test.go | ||
client.go | ||
container_test.go | ||
container.go | ||
DOCKER-LICENSE | ||
env_test.go | ||
env.go | ||
event_test.go | ||
event.go | ||
example_test.go | ||
exec_test.go | ||
exec.go | ||
image_test.go | ||
image.go | ||
integration_test.go | ||
LICENSE | ||
Makefile | ||
misc_test.go | ||
misc.go | ||
network_test.go | ||
network.go | ||
README.markdown | ||
signal.go | ||
tar.go | ||
tls.go | ||
volume_test.go | ||
volume.go |
go-dockerclient
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.
Vendoring
If you are having issues with Go 1.5 and have GO15VENDOREXPERIMENT
set with an application that has go-dockerclient vendored,
please update your vendoring of go-dockerclient :) We recently moved the vendor
directory to external
so that go-dockerclient
is compatible with this configuration. See 338 and 339
for details.
Example
package main
import (
"fmt"
"github.com/fsouza/go-dockerclient"
)
func main() {
endpoint := "unix:///var/run/docker.sock"
client, _ := docker.NewClient(endpoint)
imgs, _ := client.ListImages(docker.ListImagesOptions{All: false})
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, make fmt
will format all go files in this repository.