mirror of
https://github.com/opentofu/opentofu.git
synced 2025-01-02 12:17:39 -06:00
1b6abe6f43
Downgrade go-dockerclient to before it used the docker packages. Remove new docker packages from vendor. Remove gotty client from vendor, which can't build on solaris at all.
107 lines
3.2 KiB
Markdown
107 lines
3.2 KiB
Markdown
# go-dockerclient
|
|
|
|
[![Travis](https://img.shields.io/travis/fsouza/go-dockerclient/master.svg?style=flat-square)](https://travis-ci.org/fsouza/go-dockerclient)
|
|
[![GoDoc](https://img.shields.io/badge/api-Godoc-blue.svg?style=flat-square)](https://godoc.org/github.com/fsouza/go-dockerclient)
|
|
|
|
This package presents a client for the Docker remote API. It also provides
|
|
support for the extensions in the [Swarm API](https://docs.docker.com/swarm/swarm-api/).
|
|
It currently supports the Docker API up to version 1.23.
|
|
|
|
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](http://docs.docker.com/engine/reference/api/docker_remote_api/).
|
|
|
|
## 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](https://github.com/fsouza/go-dockerclient/issues/338) and [339](https://github.com/fsouza/go-dockerclient/pull/339)
|
|
for details.
|
|
|
|
## Example
|
|
|
|
```go
|
|
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.
|
|
|
|
```go
|
|
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](https://docs.docker.com/machine/), or another application that exports environment variables
|
|
`DOCKER_HOST, DOCKER_TLS_VERIFY, DOCKER_CERT_PATH`, you can use NewClientFromEnv.
|
|
|
|
|
|
```go
|
|
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](Makefile).
|
|
|
|
Commited code must pass:
|
|
|
|
* [golint](https://github.com/golang/lint)
|
|
* [go vet](https://godoc.org/golang.org/x/tools/cmd/vet)
|
|
* [gofmt](https://golang.org/cmd/gofmt)
|
|
* [go test](https://golang.org/cmd/go/#hdr-Test_packages)
|
|
|
|
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.
|