client

package
v1.3.0-alpha.2 Latest Latest
Warning

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

Go to latest
Published: Jun 21, 2016 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Examples

Constants

View Source
const DefaultDockerHost = "unix:///var/run/docker.sock"

DefaultDockerHost defines os specific default if DOCKER_HOST is unset

Variables

View Source
var ErrConnectionFailed = errors.New("Cannot connect to the Docker daemon. Is the docker daemon running on this host?")

ErrConnectionFailed is a error raised when the connection between the client and the server failed.

Functions

func IsErrContainerNotFound

func IsErrContainerNotFound(err error) bool

IsErrContainerNotFound returns true if the error is caused when a container is not found in the docker host.

func IsErrImageNotFound

func IsErrImageNotFound(err error) bool

IsErrImageNotFound returns true if the error is caused when an image is not found in the docker host.

func IsErrNetworkNotFound

func IsErrNetworkNotFound(err error) bool

IsErrNetworkNotFound returns true if the error is caused when a network is not found in the docker host.

func IsErrUnauthorized

func IsErrUnauthorized(err error) bool

IsErrUnauthorized returns true if the error is caused when an the remote registry authentication fails

func IsErrVolumeNotFound

func IsErrVolumeNotFound(err error) bool

IsErrVolumeNotFound returns true if the error is caused when a volume is not found in the docker host.

func ParseHost

func ParseHost(host string) (string, string, string, error)

ParseHost verifies that the given host strings is valid.

Types

type APIClient

type APIClient interface {
	ClientVersion() string
	ContainerAttach(ctx context.Context, options types.ContainerAttachOptions) (types.HijackedResponse, error)
	ContainerCommit(ctx context.Context, options types.ContainerCommitOptions) (types.ContainerCommitResponse, error)
	ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (types.ContainerCreateResponse, error)
	ContainerDiff(ctx context.Context, ontainerID string) ([]types.ContainerChange, error)
	ContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error)
	ContainerExecCreate(ctx context.Context, config types.ExecConfig) (types.ContainerExecCreateResponse, error)
	ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error)
	ContainerExecResize(ctx context.Context, options types.ResizeOptions) error
	ContainerExecStart(ctx context.Context, execID string, config types.ExecStartCheck) error
	ContainerExport(ctx context.Context, containerID string) (io.ReadCloser, error)
	ContainerInspect(ctx context.Context, containerID string) (types.ContainerJSON, error)
	ContainerInspectWithRaw(ctx context.Context, containerID string, getSize bool) (types.ContainerJSON, []byte, error)
	ContainerKill(ctx context.Context, containerID, signal string) error
	ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error)
	ContainerLogs(ctx context.Context, options types.ContainerLogsOptions) (io.ReadCloser, error)
	ContainerPause(ctx context.Context, containerID string) error
	ContainerRemove(ctx context.Context, options types.ContainerRemoveOptions) error
	ContainerRename(ctx context.Context, containerID, newContainerName string) error
	ContainerResize(ctx context.Context, options types.ResizeOptions) error
	ContainerRestart(ctx context.Context, containerID string, timeout int) error
	ContainerStatPath(ctx context.Context, containerID, path string) (types.ContainerPathStat, error)
	ContainerStats(ctx context.Context, containerID string, stream bool) (io.ReadCloser, error)
	ContainerStart(ctx context.Context, containerID string) error
	ContainerStop(ctx context.Context, containerID string, timeout int) error
	ContainerTop(ctx context.Context, containerID string, arguments []string) (types.ContainerProcessList, error)
	ContainerUnpause(ctx context.Context, containerID string) error
	ContainerUpdate(ctx context.Context, containerID string, updateConfig container.UpdateConfig) error
	ContainerWait(ctx context.Context, containerID string) (int, error)
	CopyFromContainer(ctx context.Context, containerID, srcPath string) (io.ReadCloser, types.ContainerPathStat, error)
	CopyToContainer(ctx context.Context, options types.CopyToContainerOptions) error
	Events(ctx context.Context, options types.EventsOptions) (io.ReadCloser, error)
	ImageBuild(ctx context.Context, options types.ImageBuildOptions) (types.ImageBuildResponse, error)
	ImageCreate(ctx context.Context, options types.ImageCreateOptions) (io.ReadCloser, error)
	ImageHistory(ctx context.Context, imageID string) ([]types.ImageHistory, error)
	ImageImport(ctx context.Context, options types.ImageImportOptions) (io.ReadCloser, error)
	ImageInspectWithRaw(ctx context.Context, imageID string, getSize bool) (types.ImageInspect, []byte, error)
	ImageList(ctx context.Context, options types.ImageListOptions) ([]types.Image, error)
	ImageLoad(ctx context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error)
	ImagePull(ctx context.Context, options types.ImagePullOptions, privilegeFunc RequestPrivilegeFunc) (io.ReadCloser, error)
	ImagePush(ctx context.Context, options types.ImagePushOptions, privilegeFunc RequestPrivilegeFunc) (io.ReadCloser, error)
	ImageRemove(ctx context.Context, options types.ImageRemoveOptions) ([]types.ImageDelete, error)
	ImageSearch(ctx context.Context, options types.ImageSearchOptions, privilegeFunc RequestPrivilegeFunc) ([]registry.SearchResult, error)
	ImageSave(ctx context.Context, imageIDs []string) (io.ReadCloser, error)
	ImageTag(ctx context.Context, options types.ImageTagOptions) error
	Info(ctx context.Context) (types.Info, error)
	NetworkConnect(ctx context.Context, networkID, containerID string, config *network.EndpointSettings) error
	NetworkCreate(ctx context.Context, options types.NetworkCreate) (types.NetworkCreateResponse, error)
	NetworkDisconnect(ctx context.Context, networkID, containerID string, force bool) error
	NetworkInspect(ctx context.Context, networkID string) (types.NetworkResource, error)
	NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error)
	NetworkRemove(ctx context.Context, networkID string) error
	RegistryLogin(ctx context.Context, auth types.AuthConfig) (types.AuthResponse, error)
	ServerVersion(ctx context.Context) (types.Version, error)
	VolumeCreate(ctx context.Context, options types.VolumeCreateRequest) (types.Volume, error)
	VolumeInspect(ctx context.Context, volumeID string) (types.Volume, error)
	VolumeList(ctx context.Context, filter filters.Args) (types.VolumesListResponse, error)
	VolumeRemove(ctx context.Context, volumeID string) error
}

APIClient is an interface that clients that talk with a docker server must implement.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is the API client that performs all operations against a docker server.

func NewClient

func NewClient(host string, version string, client *http.Client, httpHeaders map[string]string) (*Client, error)

NewClient initializes a new API client for the given host and API version. It won't send any version information if the version number is empty. It uses the given http client as transport. It also initializes the custom http headers to add to each request.

func NewEnvClient

func NewEnvClient() (*Client, error)

NewEnvClient initializes a new API client based on environment variables. Use DOCKER_HOST to set the url to the docker server. Use DOCKER_API_VERSION to set the version of the API to reach, leave empty for latest. Use DOCKER_CERT_PATH to load the tls certificates from. Use DOCKER_TLS_VERIFY to enable or disable TLS verification, off by default.

func (*Client) ClientVersion

func (cli *Client) ClientVersion() string

ClientVersion returns the version string associated with this instance of the Client. Note that this value can be changed via the DOCKER_API_VERSION env var.

func (*Client) ContainerAttach

func (cli *Client) ContainerAttach(ctx context.Context, options types.ContainerAttachOptions) (types.HijackedResponse, error)

ContainerAttach attaches a connection to a container in the server. It returns a types.HijackedConnection with the hijacked connection and the a reader to get output. It's up to the called to close the hijacked connection by calling types.HijackedResponse.Close.

func (*Client) ContainerCommit

func (cli *Client) ContainerCommit(ctx context.Context, options types.ContainerCommitOptions) (types.ContainerCommitResponse, error)

ContainerCommit applies changes into a container and creates a new tagged image.

func (*Client) ContainerCreate

func (cli *Client) ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (types.ContainerCreateResponse, error)

ContainerCreate creates a new container based in the given configuration. It can be associated with a name, but it's not mandatory.

func (*Client) ContainerDiff

func (cli *Client) ContainerDiff(ctx context.Context, containerID string) ([]types.ContainerChange, error)

ContainerDiff shows differences in a container filesystem since it was started.

func (*Client) ContainerExecAttach

func (cli *Client) ContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error)

ContainerExecAttach attaches a connection to an exec process in the server. It returns a types.HijackedConnection with the hijacked connection and the a reader to get output. It's up to the called to close the hijacked connection by calling types.HijackedResponse.Close.

func (*Client) ContainerExecCreate

func (cli *Client) ContainerExecCreate(ctx context.Context, config types.ExecConfig) (types.ContainerExecCreateResponse, error)

ContainerExecCreate creates a new exec configuration to run an exec process.

func (*Client) ContainerExecInspect

func (cli *Client) ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error)

ContainerExecInspect returns information about a specific exec process on the docker host.

func (*Client) ContainerExecResize

func (cli *Client) ContainerExecResize(ctx context.Context, options types.ResizeOptions) error

ContainerExecResize changes the size of the tty for an exec process running inside a container.

func (*Client) ContainerExecStart

func (cli *Client) ContainerExecStart(ctx context.Context, execID string, config types.ExecStartCheck) error

ContainerExecStart starts an exec process already create in the docker host.

func (*Client) ContainerExport

func (cli *Client) ContainerExport(ctx context.Context, containerID string) (io.ReadCloser, error)

ContainerExport retrieves the raw contents of a container and returns them as a io.ReadCloser. It's up to the caller to close the stream.

func (*Client) ContainerInspect

func (cli *Client) ContainerInspect(ctx context.Context, containerID string) (types.ContainerJSON, error)

ContainerInspect returns the container information.

func (*Client) ContainerInspectWithRaw

func (cli *Client) ContainerInspectWithRaw(ctx context.Context, containerID string, getSize bool) (types.ContainerJSON, []byte, error)

ContainerInspectWithRaw returns the container information and it's raw representation.

func (*Client) ContainerKill

func (cli *Client) ContainerKill(ctx context.Context, containerID, signal string) error

ContainerKill terminates the container process but does not remove the container from the docker host.

func (*Client) ContainerList

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

ContainerList returns the list of containers in the docker host.

func (*Client) ContainerLogs

func (cli *Client) ContainerLogs(ctx context.Context, options types.ContainerLogsOptions) (io.ReadCloser, error)

ContainerLogs returns the logs generated by a container in an io.ReadCloser. It's up to the caller to close the stream.

Example (WithTimeout)
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

client, _ := NewEnvClient()
reader, err := client.ContainerLogs(ctx, types.ContainerLogsOptions{})
if err != nil {
	log.Fatal(err)
}

_, err = io.Copy(os.Stdout, reader)
if err != nil && err != io.EOF {
	log.Fatal(err)
}
Output:

func (*Client) ContainerPause

func (cli *Client) ContainerPause(ctx context.Context, containerID string) error

ContainerPause pauses the main process of a given container without terminating it.

func (*Client) ContainerRemove

func (cli *Client) ContainerRemove(ctx context.Context, options types.ContainerRemoveOptions) error

ContainerRemove kills and removes a container from the docker host.

func (*Client) ContainerRename

func (cli *Client) ContainerRename(ctx context.Context, containerID, newContainerName string) error

ContainerRename changes the name of a given container.

func (*Client) ContainerResize

func (cli *Client) ContainerResize(ctx context.Context, options types.ResizeOptions) error

ContainerResize changes the size of the tty for a container.

func (*Client) ContainerRestart

func (cli *Client) ContainerRestart(ctx context.Context, containerID string, timeout int) error

ContainerRestart stops and starts a container again. It makes the daemon to wait for the container to be up again for a specific amount of time, given the timeout.

func (*Client) ContainerStart

func (cli *Client) ContainerStart(ctx context.Context, containerID string) error

ContainerStart sends a request to the docker daemon to start a container.

func (*Client) ContainerStatPath

func (cli *Client) ContainerStatPath(ctx context.Context, containerID, path string) (types.ContainerPathStat, error)

ContainerStatPath returns Stat information about a path inside the container filesystem.

func (*Client) ContainerStats

func (cli *Client) ContainerStats(ctx context.Context, containerID string, stream bool) (io.ReadCloser, error)

ContainerStats returns near realtime stats for a given container. It's up to the caller to close the io.ReadCloser returned.

func (*Client) ContainerStop

func (cli *Client) ContainerStop(ctx context.Context, containerID string, timeout int) error

ContainerStop stops a container without terminating the process. The process is blocked until the container stops or the timeout expires.

func (*Client) ContainerTop

func (cli *Client) ContainerTop(ctx context.Context, containerID string, arguments []string) (types.ContainerProcessList, error)

ContainerTop shows process information from within a container.

func (*Client) ContainerUnpause

func (cli *Client) ContainerUnpause(ctx context.Context, containerID string) error

ContainerUnpause resumes the process execution within a container

func (*Client) ContainerUpdate

func (cli *Client) ContainerUpdate(ctx context.Context, containerID string, updateConfig container.UpdateConfig) error

ContainerUpdate updates resources of a container

func (*Client) ContainerWait

func (cli *Client) ContainerWait(ctx context.Context, containerID string) (int, error)

ContainerWait pauses execution util a container is exits. It returns the API status code as response of its readiness.

Example (WithTimeout)
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

client, _ := NewEnvClient()
_, err := client.ContainerWait(ctx, "container_id")
if err != nil {
	log.Fatal(err)
}
Output:

func (*Client) CopyFromContainer

func (cli *Client) CopyFromContainer(ctx context.Context, containerID, srcPath string) (io.ReadCloser, types.ContainerPathStat, error)

CopyFromContainer get the content from the container and return it as a Reader to manipulate it in the host. It's up to the caller to close the reader.

func (*Client) CopyToContainer

func (cli *Client) CopyToContainer(ctx context.Context, options types.CopyToContainerOptions) error

CopyToContainer copies content into the container filesystem.

func (*Client) Events

func (cli *Client) Events(ctx context.Context, options types.EventsOptions) (io.ReadCloser, error)

Events returns a stream of events in the daemon in a ReadCloser. It's up to the caller to close the stream.

func (*Client) ImageBuild

func (cli *Client) ImageBuild(ctx context.Context, options types.ImageBuildOptions) (types.ImageBuildResponse, error)

ImageBuild sends request to the daemon to build images. The Body in the response implement an io.ReadCloser and it's up to the caller to close it.

func (*Client) ImageCreate

func (cli *Client) ImageCreate(ctx context.Context, options types.ImageCreateOptions) (io.ReadCloser, error)

ImageCreate creates a new image based in the parent options. It returns the JSON content in the response body.

func (*Client) ImageHistory

func (cli *Client) ImageHistory(ctx context.Context, imageID string) ([]types.ImageHistory, error)

ImageHistory returns the changes in an image in history format.

func (*Client) ImageImport

func (cli *Client) ImageImport(ctx context.Context, options types.ImageImportOptions) (io.ReadCloser, error)

ImageImport creates a new image based in the source options. It returns the JSON content in the response body.

func (*Client) ImageInspectWithRaw

func (cli *Client) ImageInspectWithRaw(ctx context.Context, imageID string, getSize bool) (types.ImageInspect, []byte, error)

ImageInspectWithRaw returns the image information and it's raw representation.

func (*Client) ImageList

func (cli *Client) ImageList(ctx context.Context, options types.ImageListOptions) ([]types.Image, error)

ImageList returns a list of images in the docker host.

func (*Client) ImageLoad

func (cli *Client) ImageLoad(ctx context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error)

ImageLoad loads an image in the docker host from the client host. It's up to the caller to close the io.ReadCloser returned by this function.

func (*Client) ImagePull

func (cli *Client) ImagePull(ctx context.Context, options types.ImagePullOptions, privilegeFunc RequestPrivilegeFunc) (io.ReadCloser, error)

ImagePull request the docker host to pull an image from a remote registry. It executes the privileged function if the operation is unauthorized and it tries one more time. It's up to the caller to handle the io.ReadCloser and close it properly.

func (*Client) ImagePush

func (cli *Client) ImagePush(ctx context.Context, options types.ImagePushOptions, privilegeFunc RequestPrivilegeFunc) (io.ReadCloser, error)

ImagePush request the docker host to push an image to a remote registry. It executes the privileged function if the operation is unauthorized and it tries one more time. It's up to the caller to handle the io.ReadCloser and close it properly.

func (*Client) ImageRemove

func (cli *Client) ImageRemove(ctx context.Context, options types.ImageRemoveOptions) ([]types.ImageDelete, error)

ImageRemove removes an image from the docker host.

func (*Client) ImageSave

func (cli *Client) ImageSave(ctx context.Context, imageIDs []string) (io.ReadCloser, error)

ImageSave retrieves one or more images from the docker host as a io.ReadCloser. It's up to the caller to store the images and close the stream.

func (*Client) ImageSearch

func (cli *Client) ImageSearch(ctx context.Context, options types.ImageSearchOptions, privilegeFunc RequestPrivilegeFunc) ([]registry.SearchResult, error)

ImageSearch makes the docker host to search by a term in a remote registry. The list of results is not sorted in any fashion.

func (*Client) ImageTag

func (cli *Client) ImageTag(ctx context.Context, options types.ImageTagOptions) error

ImageTag tags an image in the docker host

func (*Client) Info

func (cli *Client) Info(ctx context.Context) (types.Info, error)

Info returns information about the docker server.

func (*Client) NetworkConnect

func (cli *Client) NetworkConnect(ctx context.Context, networkID, containerID string, config *network.EndpointSettings) error

NetworkConnect connects a container to an existent network in the docker host.

func (*Client) NetworkCreate

func (cli *Client) NetworkCreate(ctx context.Context, options types.NetworkCreate) (types.NetworkCreateResponse, error)

NetworkCreate creates a new network in the docker host.

func (*Client) NetworkDisconnect

func (cli *Client) NetworkDisconnect(ctx context.Context, networkID, containerID string, force bool) error

NetworkDisconnect disconnects a container from an existent network in the docker host.

func (*Client) NetworkInspect

func (cli *Client) NetworkInspect(ctx context.Context, networkID string) (types.NetworkResource, error)

NetworkInspect returns the information for a specific network configured in the docker host.

func (*Client) NetworkList

func (cli *Client) NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error)

NetworkList returns the list of networks configured in the docker host.

func (*Client) NetworkRemove

func (cli *Client) NetworkRemove(ctx context.Context, networkID string) error

NetworkRemove removes an existent network from the docker host.

func (*Client) RegistryLogin

func (cli *Client) RegistryLogin(ctx context.Context, auth types.AuthConfig) (types.AuthResponse, error)

RegistryLogin authenticates the docker server with a given docker registry. It returns UnauthorizerError when the authentication fails.

func (*Client) ServerVersion

func (cli *Client) ServerVersion(ctx context.Context) (types.Version, error)

ServerVersion returns information of the docker client and server host.

func (*Client) VolumeCreate

func (cli *Client) VolumeCreate(ctx context.Context, options types.VolumeCreateRequest) (types.Volume, error)

VolumeCreate creates a volume in the docker host.

func (*Client) VolumeInspect

func (cli *Client) VolumeInspect(ctx context.Context, volumeID string) (types.Volume, error)

VolumeInspect returns the information about a specific volume in the docker host.

func (*Client) VolumeList

func (cli *Client) VolumeList(ctx context.Context, filter filters.Args) (types.VolumesListResponse, error)

VolumeList returns the volumes configured in the docker host.

func (*Client) VolumeRemove

func (cli *Client) VolumeRemove(ctx context.Context, volumeID string) error

VolumeRemove removes a volume from the docker host.

type RequestPrivilegeFunc

type RequestPrivilegeFunc func() (string, error)

RequestPrivilegeFunc is a function interface that clients can supply to retry operations after getting an authorization error. This function returns the registry authentication header value in base 64 format, or an error if the privilege request fails.

Directories

Path Synopsis
Package transport provides function to send request to remote endpoints.
Package transport provides function to send request to remote endpoints.
cancellable
Package cancellable provides helper function to cancel http requests.
Package cancellable provides helper function to cancel http requests.

Jump to

Keyboard shortcuts

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