docker

package
v0.10.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2019 License: Apache-2.0 Imports: 34 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TestPod       = "test_pod"
	TestContainer = "test_container"
)
View Source
const ExampleBuildOutput1 = `` /* 276-byte string literal not displayed */
View Source
const ExampleBuildOutputV1_23 = `` /* 186-byte string literal not displayed */
View Source
const ExampleBuildSHA1 = "sha256:11cd0b38bc3ceb958ffb2f9bd70be3fb317ce7d255c8a4c3f4af30e298aa1aab"
View Source
const ExamplePushSHA1 = "sha256:cc5f4c463f81c55183d8d737ba2f0d30b3e6f3670dbe2da68f0aac168e93fbb1"
View Source
const TagLatest = "latest"

Variables

Bind a docker client that talks to the in-cluster Docker daemon.

View Source
var DefaultContainerListOutput = map[string][]types.Container{
	TestPod: []types.Container{
		types.Container{ID: TestContainer, ImageID: ExampleBuildSHA1, Command: "./stuff"},
	},
	"two-containers": []types.Container{
		types.Container{ID: "not a match", ImageID: ExamplePushSHA1, Command: "/pause"},
		types.Container{ID: "the right container", ImageID: ExampleBuildSHA1, Command: "./stuff"},
	},
}
View Source
var ExamplePushOutput1 = `` /* 1660-byte string literal not displayed */

Bind a docker client that can only talk to the local Docker daemon.

Bind a docker client that can either talk to the in-cluster Docker daemon or to the local Docker daemon.

Functions

func CreateClientOpts

func CreateClientOpts(ctx context.Context, env Env) ([]func(client *client.Client) error, error)

Adapted from client.FromEnv

Supported environment variables: DOCKER_HOST to set the url to the docker server. DOCKER_API_VERSION to set the version of the API to reach, leave empty for latest. DOCKER_CERT_PATH to load the TLS certificates from. DOCKER_TLS_VERIFY to enable or disable TLS verification, off by default.

func IsExitError

func IsExitError(err error) bool

func NegotiateAPIVersion added in v0.4.1

func NegotiateAPIVersion(ctx context.Context) func(client *client.Client) error

func NewFakeDockerResponse

func NewFakeDockerResponse(contents string) fakeDockerResponse

func ProvideSwitchCli added in v0.9.1

func ProvideSwitchCli(clusterCli ClusterClient, localCli LocalClient) *switchCli

func SupportedVersion added in v0.4.1

func SupportedVersion(v types.Version) bool

func SupportsBuildkit added in v0.4.1

func SupportsBuildkit(v types.Version, env Env) bool

Sadly, certain versions of docker return an error if the client requests buildkit. We have to infer whether it supports buildkit from version numbers.

Inferred from release notes https://docs.docker.com/engine/release-notes/

Types

type BuildOptions added in v0.7.1

type BuildOptions struct {
	Context    io.Reader
	Dockerfile string
	Remove     bool
	BuildArgs  map[string]*string
	Tags       []string
	Target     string
}

type Cli added in v0.5.0

type Cli struct {
	*client.Client
	// contains filtered or unexported fields
}

func (*Cli) BuilderVersion added in v0.9.1

func (c *Cli) BuilderVersion() types.BuilderVersion

func (*Cli) CheckConnected added in v0.10.8

func (c *Cli) CheckConnected() error

func (*Cli) ContainerRestartNoWait added in v0.5.0

func (c *Cli) ContainerRestartNoWait(ctx context.Context, containerID string) error

func (*Cli) CopyToContainerRoot added in v0.5.0

func (c *Cli) CopyToContainerRoot(ctx context.Context, container string, content io.Reader) error

func (*Cli) Env added in v0.9.1

func (c *Cli) Env() Env

func (*Cli) ExecInContainer added in v0.5.0

func (c *Cli) ExecInContainer(ctx context.Context, cID container.ID, cmd model.Cmd, out io.Writer) error

func (*Cli) ImageBuild added in v0.5.0

func (c *Cli) ImageBuild(ctx context.Context, buildContext io.Reader, options BuildOptions) (types.ImageBuildResponse, error)

func (*Cli) ImagePush added in v0.10.8

func (c *Cli) ImagePush(ctx context.Context, ref reference.NamedTagged) (io.ReadCloser, error)

func (*Cli) ServerVersion added in v0.9.1

func (c *Cli) ServerVersion() types.Version

func (*Cli) SetOrchestrator added in v0.9.1

func (c *Cli) SetOrchestrator(orc model.Orchestrator)

type Client added in v0.5.0

type Client interface {
	CheckConnected() error

	// If you'd like to call this Docker instance in a separate process, these
	// are the environment variables you'll need to do so.
	Env() Env

	// If you'd like to call this Docker instance in a separate process, this
	// is the default builder version you want (buildkit or legacy)
	BuilderVersion() types.BuilderVersion

	ServerVersion() types.Version

	// Set the orchestrator we're talking to. This is only relevant to switchClient,
	// which can talk to either the Local or in-cluster docker daemon.
	SetOrchestrator(orc model.Orchestrator)

	ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error)
	ContainerRestartNoWait(ctx context.Context, containerID string) error
	CopyToContainerRoot(ctx context.Context, container string, content io.Reader) error

	// Execute a command in a container, streaming the command output to `out`.
	// Returns an ExitError if the command exits with a non-zero exit code.
	ExecInContainer(ctx context.Context, cID container.ID, cmd model.Cmd, out io.Writer) error

	ImagePush(ctx context.Context, image reference.NamedTagged) (io.ReadCloser, error)
	ImageBuild(ctx context.Context, buildContext io.Reader, options BuildOptions) (types.ImageBuildResponse, error)
	ImageTag(ctx context.Context, source, target string) error
	ImageInspectWithRaw(ctx context.Context, imageID string) (types.ImageInspect, []byte, error)
	ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error)
	ImageRemove(ctx context.Context, imageID string, options types.ImageRemoveOptions) ([]types.ImageDeleteResponseItem, error)
}

Create an interface so this can be mocked out.

func NewDockerClient added in v0.9.1

func NewDockerClient(ctx context.Context, env Env) Client

func ProvideClusterAsDefault added in v0.9.1

func ProvideClusterAsDefault(cli ClusterClient) Client

func ProvideLocalAsDefault added in v0.9.1

func ProvideLocalAsDefault(cli LocalClient) Client

type ClusterClient added in v0.9.1

type ClusterClient Client

func ProvideClusterCli added in v0.9.1

func ProvideClusterCli(ctx context.Context, lEnv LocalEnv, cEnv ClusterEnv, lClient LocalClient) (ClusterClient, error)

type ClusterEnv added in v0.9.1

type ClusterEnv Env

Tell wire to create two docker envs: one for the local CLI and one for the in-cluster CLI.

func ProvideClusterEnv added in v0.9.1

func ProvideClusterEnv(ctx context.Context, env k8s.Env, runtime container.Runtime, minikubeClient minikube.Client) (ClusterEnv, error)

func ProvideEmptyClusterEnv added in v0.9.5

func ProvideEmptyClusterEnv() ClusterEnv

type Env added in v0.7.11

type Env struct {
	Host       string
	APIVersion string
	TLSVerify  string
	CertPath   string

	// Minikube's docker client has a bug where it can't use buildkit. See:
	// https://github.com/kubernetes/minikube/issues/4143
	IsMinikube bool
}

See notes on CreateClientOpts. These environment variables are standard docker env configs.

func (Env) AsEnviron added in v0.7.11

func (e Env) AsEnviron() []string

Serializes this back to environment variables for os.Environ

type ExecCall

type ExecCall struct {
	Container string
	Cmd       model.Cmd
}

type ExitError

type ExitError struct {
	ExitCode int
}

func (ExitError) Error

func (e ExitError) Error() string

type FakeClient added in v0.5.0

type FakeClient struct {
	PushCount   int
	PushImage   string
	PushOptions types.ImagePushOptions
	PushOutput  string

	BuildCount        int
	BuildOptions      BuildOptions
	BuildOutput       string
	BuildErrorToThrow error // next call to Build will throw this err (after which we clear the error)

	ImageListCount int

	TagCount  int
	TagSource string
	TagTarget string

	ContainerListOutput map[string][]types.Container

	CopyCount     int
	CopyContainer string
	CopyContent   io.Reader

	ExecCalls         []ExecCall
	ExecErrorsToThrow []error // next call to exec will throw ExecError[0] (which we then pop)

	RestartsByContainer map[string]int
	RemovedImageIDs     []string

	Images            map[string]types.ImageInspect
	Orchestrator      model.Orchestrator
	CheckConnectedErr error
}

func NewFakeClient added in v0.5.0

func NewFakeClient() *FakeClient

func (*FakeClient) BuilderVersion added in v0.9.1

func (c *FakeClient) BuilderVersion() types.BuilderVersion

func (*FakeClient) CheckConnected added in v0.10.8

func (c *FakeClient) CheckConnected() error

func (*FakeClient) ContainerList added in v0.5.0

func (c *FakeClient) ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error)

func (*FakeClient) ContainerRestartNoWait added in v0.5.0

func (c *FakeClient) ContainerRestartNoWait(ctx context.Context, containerID string) error

func (*FakeClient) CopyToContainerRoot added in v0.5.0

func (c *FakeClient) CopyToContainerRoot(ctx context.Context, container string, content io.Reader) error

func (*FakeClient) Env added in v0.9.1

func (c *FakeClient) Env() Env

func (*FakeClient) ExecInContainer added in v0.5.0

func (c *FakeClient) ExecInContainer(ctx context.Context, cID container.ID, cmd model.Cmd, out io.Writer) error

func (*FakeClient) ImageBuild added in v0.5.0

func (c *FakeClient) ImageBuild(ctx context.Context, buildContext io.Reader, options BuildOptions) (types.ImageBuildResponse, error)

func (*FakeClient) ImageInspectWithRaw added in v0.5.0

func (c *FakeClient) ImageInspectWithRaw(ctx context.Context, imageID string) (types.ImageInspect, []byte, error)

func (*FakeClient) ImageList added in v0.5.0

func (c *FakeClient) ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error)

func (*FakeClient) ImagePush added in v0.5.0

func (c *FakeClient) ImagePush(ctx context.Context, ref reference.NamedTagged) (io.ReadCloser, error)

func (*FakeClient) ImageRemove added in v0.5.0

func (c *FakeClient) ImageRemove(ctx context.Context, imageID string, options types.ImageRemoveOptions) ([]types.ImageDeleteResponseItem, error)

func (*FakeClient) ImageTag added in v0.5.0

func (c *FakeClient) ImageTag(ctx context.Context, source, target string) error

func (*FakeClient) ServerVersion added in v0.9.1

func (c *FakeClient) ServerVersion() types.Version

func (*FakeClient) SetContainerListOutput added in v0.5.0

func (c *FakeClient) SetContainerListOutput(output map[string][]types.Container)

func (*FakeClient) SetDefaultContainerListOutput added in v0.5.0

func (c *FakeClient) SetDefaultContainerListOutput()

func (*FakeClient) SetExecError added in v0.10.0

func (c *FakeClient) SetExecError(err error)

func (*FakeClient) SetOrchestrator added in v0.9.1

func (c *FakeClient) SetOrchestrator(orc model.Orchestrator)

type ImgNameAndTag

type ImgNameAndTag struct {
	Name string
	Tag  string
}

For use storing reference.NamedTagged as a map key, since we can't rely on the two different underlying representations the same name+tag combo being equivalent.

func ToImgNameAndTag

func ToImgNameAndTag(nt reference.NamedTagged) ImgNameAndTag

type LocalClient added in v0.9.1

type LocalClient Client

func ProvideLocalCli added in v0.9.1

func ProvideLocalCli(ctx context.Context, lEnv LocalEnv) LocalClient

type LocalEnv added in v0.9.1

type LocalEnv Env

func ProvideLocalEnv added in v0.9.1

func ProvideLocalEnv(ctx context.Context, cEnv ClusterEnv) (LocalEnv, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL