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.