Documentation
¶
Index ¶
- Constants
- Variables
- func CreateClientOpts(ctx context.Context, env Env) ([]func(client *client.Client) error, error)
- func IsExitError(err error) bool
- func NegotiateAPIVersion(ctx context.Context) func(client *client.Client) error
- func NewFakeDockerResponse(contents string) fakeDockerResponse
- func ProvideDockerClient(ctx context.Context, env Env) (*client.Client, error)
- func ProvideDockerVersion(ctx context.Context, client *client.Client) (types.Version, error)
- func SupportedVersion(v types.Version) bool
- func SupportsBuildkit(v types.Version) bool
- type BuildOptions
- type Cli
- func (c *Cli) ContainerRestartNoWait(ctx context.Context, containerID string) error
- func (c *Cli) CopyToContainerRoot(ctx context.Context, container string, content io.Reader) error
- func (c *Cli) ExecInContainer(ctx context.Context, cID container.ID, cmd model.Cmd, out io.Writer) error
- func (c *Cli) ImageBuild(ctx context.Context, buildContext io.Reader, options BuildOptions) (types.ImageBuildResponse, error)
- type Client
- type Env
- type ExecCall
- type ExitError
- type FakeClient
- func (c *FakeClient) ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error)
- func (c *FakeClient) ContainerRestartNoWait(ctx context.Context, containerID string) error
- func (c *FakeClient) CopyToContainerRoot(ctx context.Context, container string, content io.Reader) error
- func (c *FakeClient) ExecInContainer(ctx context.Context, cID container.ID, cmd model.Cmd, out io.Writer) error
- func (c *FakeClient) ImageBuild(ctx context.Context, buildContext io.Reader, options BuildOptions) (types.ImageBuildResponse, error)
- func (c *FakeClient) ImageInspectWithRaw(ctx context.Context, imageID string) (types.ImageInspect, []byte, error)
- func (c *FakeClient) ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error)
- func (c *FakeClient) ImagePush(ctx context.Context, image string, options types.ImagePushOptions) (io.ReadCloser, error)
- func (c *FakeClient) ImageRemove(ctx context.Context, imageID string, options types.ImageRemoveOptions) ([]types.ImageDeleteResponseItem, error)
- func (c *FakeClient) ImageTag(ctx context.Context, source, target string) error
- func (c *FakeClient) SetContainerListOutput(output map[string][]types.Container)
- func (c *FakeClient) SetDefaultContainerListOutput()
- type ImgNameAndTag
Constants ¶
const (
TestPod = "test_pod"
TestContainer = "test_container"
)
const ExampleBuildOutput1 = `` /* 276-byte string literal not displayed */
const ExampleBuildOutputV1_23 = `` /* 186-byte string literal not displayed */
const ExampleBuildSHA1 = "sha256:11cd0b38bc3ceb958ffb2f9bd70be3fb317ce7d255c8a4c3f4af30e298aa1aab"
const ExamplePushSHA1 = "sha256:cc5f4c463f81c55183d8d737ba2f0d30b3e6f3670dbe2da68f0aac168e93fbb1"
const TagLatest = "latest"
Variables ¶
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"},
},
}
var ExamplePushOutput1 = `` /* 1660-byte string literal not displayed */
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 ProvideDockerClient ¶ added in v0.7.11
func ProvideDockerClient(ctx context.Context, env Env) (*client.Client, error)
func ProvideDockerVersion ¶ added in v0.7.11
func ProvideDockerVersion(ctx context.Context, client *client.Client) (types.Version, error)
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) 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
}
type Cli ¶ added in v0.5.0
type Cli struct {
*client.Client
// contains filtered or unexported fields
}
func DefaultClient ¶ added in v0.5.0
func DefaultClient(ctx context.Context, d *client.Client, serverVersion types.Version) (*Cli, 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) 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)
type Client ¶ added in v0.5.0
type Client interface {
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 string, options types.ImagePushOptions) (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.
type Env ¶ added in v0.7.11
type Env struct {
Host string
APIVersion string
TLSVerify string
CertPath string
}
See notes on CreateClientOpts. These environment variables are standard docker env configs.
func ProvideEnv ¶ added in v0.7.11
func ProvideEnv(ctx context.Context, env k8s.Env, runtime container.Runtime, minikubeClient minikube.Client) (Env, error)
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)
TagCount int
TagSource string
TagTarget string
ContainerListOutput map[string][]types.Container
CopyCount int
CopyContainer string
CopyContent io.Reader
ExecCalls []ExecCall
ExecErrorToThrow error // next call to Exec will throw this err (after which we clear the error)
RestartsByContainer map[string]int
RemovedImageIDs []string
Images map[string]types.ImageInspect
}
func NewFakeClient ¶ added in v0.5.0
func NewFakeClient() *FakeClient
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) 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, image string, options types.ImagePushOptions) (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) 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()
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