Add Docker engines provider

This commit is contained in:
CrazyMax
2019-12-12 00:03:08 +01:00
parent a2bfb6534e
commit dcf6712152
9 changed files with 211 additions and 30 deletions

View File

@@ -11,9 +11,13 @@ type Client struct {
Api *client.Client
}
// NewEnvClient initializes a new Docker API client based on environment variables
func NewEnvClient() (*Client, error) {
d, err := client.NewClientWithOpts(client.FromEnv, client.WithVersion("1.12"))
// NewClient initializes a new Docker API client with default values
func NewClient(endpoint string, apiVersion string, caFile string, certFile string, keyFile string) (*Client, error) {
d, err := client.NewClientWithOpts(
client.WithHost(endpoint),
client.WithVersion(apiVersion),
client.WithTLSClientConfig(caFile, certFile, keyFile),
)
if err != nil {
return nil, err
}

30
pkg/docker/container.go Normal file
View File

@@ -0,0 +1,30 @@
package docker
import (
"context"
"sort"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters"
)
// ContainerOptions holds docker container object options
type ContainerOptions struct {
IncludeStopped bool
}
// ContainerList return container list.
func (c *Client) ContainerList(filterArgs ...filters.KeyValuePair) ([]types.Container, error) {
containers, err := c.Api.ContainerList(context.Background(), types.ContainerListOptions{
Filters: filters.NewArgs(filterArgs...),
})
if err != nil {
return nil, err
}
sort.Slice(containers, func(i, j int) bool {
return containers[i].Image < containers[j].Image
})
return containers, nil
}