libpod

package
v1.0.0-rc3 Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2017 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// IPCNamespace represents the IPC namespace
	IPCNamespace = "ipc"
	// MountNamespace represents the mount namespace
	MountNamespace = "mount"
	// NetNamespace represents the network namespace
	NetNamespace = "net"
	// PIDNamespace represents the PID namespace
	PIDNamespace = "pid"
	// UserNamespace represents the user namespace
	UserNamespace = "user"
	// UTSNamespace represents the UTS namespace
	UTSNamespace = "uts"
)
View Source
const (
	// DefaultRegistry is a prefix that we apply to an image name
	// to check docker hub first for the image
	DefaultRegistry = "docker://"
)

Variables

View Source
var (
	// ErrNoSuchCtr indicates the requested container does not exist
	ErrNoSuchCtr = errors.New("no such container")
	// ErrNoSuchPod indicates the requested pod does not exist
	ErrNoSuchPod = errors.New("no such pod")
	// ErrNoSuchImage indicates the requested image does not exist
	ErrNoSuchImage = errors.New("no such image")

	// ErrCtrExists indicates a container with the same name or ID already
	// exists
	ErrCtrExists = errors.New("container already exists")
	// ErrPodExists indicates a pod with the same name or ID already exists
	ErrPodExists = errors.New("pod already exists")
	// ErrImageExists indicated an image with the same ID already exists
	ErrImageExists = errors.New("image already exists")

	// ErrRuntimeFinalized indicates that the runtime has already been
	// created and cannot be modified
	ErrRuntimeFinalized = errors.New("runtime has been finalized")
	// ErrCtrFinalized indicates that the container has already been created
	// and cannot be modified
	ErrCtrFinalized = errors.New("container has been finalized")
	// ErrPodFinalized indicates that the pod has already been created and
	// cannot be modified
	ErrPodFinalized = errors.New("pod has been finalized")

	// ErrInvalidArg indicates that an invalid argument was passed
	ErrInvalidArg = errors.New("invalid argument")

	// ErrRuntimeStopped indicates that the runtime has already been shut
	// down and no further operations can be performed on it
	ErrRuntimeStopped = errors.New("runtime has already been stopped")
	// ErrCtrStopped indicates that the requested container is not running
	// and the requested operation cannot be performed until it is started
	ErrCtrStopped = errors.New("container is stopped")

	// ErrCtrRemoved indicates that the container has already been removed
	// and no further operations can be performed on it
	ErrCtrRemoved = errors.New("container has already been removed")
	// ErrPodRemoved indicates that the pod has already been removed and no
	// further operations can be performed on it
	ErrPodRemoved = errors.New("pod has already been removed")

	// ErrNotImplemented indicates that the requested functionality is not
	// yet present
	ErrNotImplemented = errors.New("not yet implemented")
)
View Source
var (
	// DockerArchive is the transport we prepend to an image name
	// when saving to docker-archive
	DockerArchive = dockerarchive.Transport.Name()
	// OCIArchive is the transport we prepend to an image name
	// when saving to oci-archive
	OCIArchive = ociarchive.Transport.Name()
)

Functions

This section is empty.

Types

type Container

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

Container is a single OCI container

func (*Container) Attach

func (c *Container) Attach(stdin, tty bool) (string, error)

Attach attaches to a container Returns fully qualified URL of streaming server for the container

func (*Container) Commit

func (c *Container) Commit() (*storage.Image, error)

Commit commits the changes between a container and its image, creating a new image If the container was not created from an image (for example, WithRootFSFromPath will create a container from a directory on the system), a new base image will be created from the contents of the container's filesystem

func (*Container) Create

func (c *Container) Create() error

Create creates a container in the OCI runtime

func (*Container) Exec

func (c *Container) Exec(cmd []string, tty bool, stdin bool) (string, error)

Exec starts a new process inside the container Returns fully qualified URL of streaming server for executed process

func (*Container) Export

func (c *Container) Export(path string) error

Export exports a container's root filesystem as a tar archive The archive will be saved as a file at the given path

func (*Container) ID

func (c *Container) ID() string

ID returns the container's ID

func (*Container) Kill

func (c *Container) Kill(signal uint) error

Kill sends a signal to a container

func (*Container) Mount

func (c *Container) Mount() (string, error)

Mount mounts a container's filesystem on the host The path where the container has been mounted is returned

func (*Container) Name

func (c *Container) Name() string

Name returns the container's name

func (*Container) Spec

func (c *Container) Spec() *spec.Spec

Spec returns the container's OCI runtime spec

func (*Container) Start

func (c *Container) Start() error

Start starts a container

func (*Container) Status

func (c *Container) Status() error

Status gets a container's status TODO this should return relevant information about container state

func (*Container) Stop

func (c *Container) Stop() error

Stop stops a container

type ContainerFilter

type ContainerFilter func(*Container) bool

ContainerFilter is a function to determine whether a container is included in command output. Containers to be outputted are tested using the function. A true return will include the container, a false return will exclude it.

type CopyOptions

type CopyOptions struct {
	// Compression specifies the type of compression which is applied to
	// layer blobs.  The default is to not use compression, but
	// archive.Gzip is recommended.
	Compression archive.Compression
	// DockerRegistryOptions encapsulates settings that affect how we
	// connect or authenticate to a remote registry to which we want to
	// push the image.
	common.DockerRegistryOptions
	// SigningOptions encapsulates settings that control whether or not we
	// strip or add signatures to the image when pushing (uploading) the
	// image to a registry.
	common.SigningOptions

	// SigningPolicyPath this points to a alternative signature policy file, used mainly for testing
	SignaturePolicyPath string
}

CopyOptions contains the options given when pushing or pulling images

type CtrCreateOption

type CtrCreateOption func(*Container) error

A CtrCreateOption is a functional option which alters the Container created by NewContainer

func WithAnnotations

func WithAnnotations(annotations map[string]string) CtrCreateOption

WithAnnotations adds annotations to the pod

func WithLabels

func WithLabels(labels map[string]string) CtrCreateOption

WithLabels adds labels to the pod

func WithName

func WithName(name string) CtrCreateOption

WithName sets the container's name

func WithRootFSFromImage

func WithRootFSFromImage(image string, useImageConfig bool) CtrCreateOption

WithRootFSFromImage sets up a fresh root filesystem using the given image If useImageConfig is specified, image volumes, environment variables, and other configuration from the image will be added to the config

func WithRootFSFromPath

func WithRootFSFromPath(path string) CtrCreateOption

WithRootFSFromPath uses the given path as a container's root filesystem No further setup is performed on this path

func WithSharedNamespaces

func WithSharedNamespaces(from *Container, namespaces map[string]string) CtrCreateOption

WithSharedNamespaces sets a container to share namespaces with another container. If the from container belongs to a pod, the new container will be added to the pod. By default no namespaces are shared. To share a namespace, add the Namespace string constant to the map as a key

func WithStopSignal

func WithStopSignal(signal uint) CtrCreateOption

WithStopSignal sets the signal that will be sent to stop the container

type ImageFilter

type ImageFilter func(*storage.Image) bool

ImageFilter is a function to determine whether an image is included in command output. Images to be outputted are tested using the function. A true return will include the image, a false return will exclude it.

type Pod

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

Pod represents a group of containers that may share namespaces

func (*Pod) GetContainers

func (p *Pod) GetContainers() ([]*Container, error)

GetContainers retrieves the containers in the pod

func (*Pod) ID

func (p *Pod) ID() string

ID retrieves the pod's ID

func (*Pod) Kill

func (p *Pod) Kill(signal uint) error

Kill sends a signal to all running containers within a pod

func (*Pod) Name

func (p *Pod) Name() string

Name retrieves the pod's name

func (*Pod) Start

func (p *Pod) Start() error

Start starts all containers within a pod that are not already running

func (*Pod) Status

func (p *Pod) Status() error

Status gets the status of all containers in the pod TODO This should return a summary of the states of all containers in the pod

func (*Pod) Stop

func (p *Pod) Stop() error

Stop stops all containers within a pod that are not already stopped

type PodCreateOption

type PodCreateOption func(*Pod) error

A PodCreateOption is a functional option which alters the Pod created by NewPod

func WithPodName

func WithPodName(name string) PodCreateOption

WithPodName sets the name of the pod

type PodFilter

type PodFilter func(*Pod) bool

PodFilter is a function to determine whether a pod is included in command output. Pods to be outputted are tested using the function. A true return will include the pod, a false return will exclude it.

type Runtime

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

Runtime is the core libpod runtime

func NewRuntime

func NewRuntime(options ...RuntimeOption) (*Runtime, error)

NewRuntime creates a new container runtime Options can be passed to override the default configuration for the runtime

func (*Runtime) Containers

func (r *Runtime) Containers(filters ...ContainerFilter) ([]*Container, error)

Containers retrieves all containers from the state Filters can be provided which will determine what containers are included in the output. Multiple filters are handled by ANDing their output, so only containers matching all filters are returned

func (*Runtime) GetConfig

func (r *Runtime) GetConfig() *RuntimeConfig

GetConfig returns a copy of the configuration used by the runtime

func (*Runtime) GetContainer

func (r *Runtime) GetContainer(id string) (*Container, error)

GetContainer retrieves a container by its ID

func (*Runtime) GetImage

func (r *Runtime) GetImage(image string) (*storage.Image, error)

GetImage retrieves an image matching the given name or hash from system storage If no matching image can be found, an error is returned

func (*Runtime) GetImageRef

func (r *Runtime) GetImageRef(image string) (types.Image, error)

GetImageRef searches for and returns a new types.Image matching the given name or ID in the given store.

func (*Runtime) GetImages

func (r *Runtime) GetImages(filter ...ImageFilter) ([]*storage.Image, error)

GetImages retrieves all images present in storage Filters can be provided which will determine which images are included in the output. Multiple filters are handled by ANDing their output, so only images matching all filters are included

func (*Runtime) GetPod

func (r *Runtime) GetPod(id string) (*Pod, error)

GetPod retrieves a pod by its ID

func (*Runtime) HasContainer

func (r *Runtime) HasContainer(id string) (bool, error)

HasContainer checks if a container with the given ID is present

func (*Runtime) HasPod

func (r *Runtime) HasPod(id string) (bool, error)

HasPod checks to see if a pod with the given ID exists

func (*Runtime) ImportImage

func (r *Runtime) ImportImage(path string) (*storage.Image, error)

ImportImage imports an OCI format image archive into storage as an image

func (*Runtime) LookupContainer

func (r *Runtime) LookupContainer(idOrName string) (*Container, error)

LookupContainer looks up a container by its name or a partial ID If a partial ID is not unique, an error will be returned

func (*Runtime) LookupPod

func (r *Runtime) LookupPod(idOrName string) (*Pod, error)

LookupPod retrieves a pod by its name or a partial ID If a partial ID is not unique, an error will be returned

func (*Runtime) NewContainer

func (r *Runtime) NewContainer(spec *spec.Spec, options ...CtrCreateOption) (*Container, error)

NewContainer creates a new container from a given OCI config

func (*Runtime) NewPod

func (r *Runtime) NewPod(options ...PodCreateOption) (*Pod, error)

NewPod makes a new, empty pod

func (*Runtime) Pods

func (r *Runtime) Pods(filters ...PodFilter) ([]*Pod, error)

Pods retrieves all pods Filters can be provided which will determine which pods are included in the output. Multiple filters are handled by ANDing their output, so only pods matching all filters are returned

func (*Runtime) PullImage

func (r *Runtime) PullImage(imgName string, allTags bool, signaturePolicyPath string, reportWriter io.Writer) error

PullImage pulls an image from configured registries By default, only the latest tag (or a specific tag if requested) will be pulled. If allTags is true, all tags for the requested image will be pulled. Signature validation will be performed if the Runtime has been appropriately configured

func (*Runtime) PushImage

func (r *Runtime) PushImage(source string, destination string, options CopyOptions, reportWriter io.Writer) error

PushImage pushes the given image to a location described by the given path

func (*Runtime) RemoveContainer

func (r *Runtime) RemoveContainer(c *Container, force bool) error

RemoveContainer removes the given container If force is specified, the container will be stopped first Otherwise, RemoveContainer will return an error if the container is running

func (*Runtime) RemoveImage

func (r *Runtime) RemoveImage(image *storage.Image) error

RemoveImage deletes an image from local storage Images being used by running containers cannot be removed

func (*Runtime) RemovePod

func (r *Runtime) RemovePod(p *Pod, force bool) error

RemovePod removes a pod and all containers in it If force is specified, all containers in the pod will be stopped first Otherwise, RemovePod will return an error if any container in the pod is running Remove acts atomically, removing all containers or no containers

func (*Runtime) Shutdown

func (r *Runtime) Shutdown(force bool) error

Shutdown shuts down the runtime and associated containers and storage If force is true, containers and mounted storage will be shut down before cleaning up; if force is false, an error will be returned if there are still containers running or mounted

func (*Runtime) TagImage

func (r *Runtime) TagImage(image *storage.Image, tag string) error

TagImage adds a tag to the given image

func (*Runtime) UntagImage

func (r *Runtime) UntagImage(image *storage.Image, tag string) error

UntagImage removes a tag from the given image

func (*Runtime) WithPod

func (r *Runtime) WithPod(pod *Pod) CtrCreateOption

WithPod adds the container to a pod

type RuntimeConfig

type RuntimeConfig struct {
	StorageConfig         storage.StoreOptions
	ImageDefaultTransport string
	InsecureRegistries    []string
	Registries            []string
	SignaturePolicyPath   string
	RuntimePath           string
	ConmonPath            string
	ConmonEnvVars         []string
	CgroupManager         string
	SelinuxEnabled        bool
	PidsLimit             int64
}

RuntimeConfig contains configuration options used to set up the runtime

type RuntimeOption

type RuntimeOption func(*Runtime) error

A RuntimeOption is a functional option which alters the Runtime created by NewRuntime

func WithCgroupManager

func WithCgroupManager(manager string) RuntimeOption

WithCgroupManager specifies the manager implementation name which is used to handle cgroups for containers

func WithConmonEnv

func WithConmonEnv(environment []string) RuntimeOption

WithConmonEnv specifies the environment variable list for the conmon process

func WithConmonPath

func WithConmonPath(path string) RuntimeOption

WithConmonPath specifies the path to the conmon binary which manages the runtime

func WithImageConfig

func WithImageConfig(defaultTransport string, insecureRegistries, registries []string) RuntimeOption

WithImageConfig uses the given configuration to set up image handling If this is not specified, the system default configuration will be used instead

func WithOCIRuntime

func WithOCIRuntime(runtimePath string) RuntimeOption

WithOCIRuntime specifies an OCI runtime to use for running containers

func WithPidsLimit

func WithPidsLimit(limit int64) RuntimeOption

WithPidsLimit specifies the maximum number of processes each container is restricted to

func WithSELinux

func WithSELinux() RuntimeOption

WithSELinux enables SELinux on the container server

func WithSignaturePolicy

func WithSignaturePolicy(path string) RuntimeOption

WithSignaturePolicy specifies the path of a file which decides how trust is managed for images we've pulled. If this is not specified, the system default configuration will be used instead

func WithStorageConfig

func WithStorageConfig(config storage.StoreOptions) RuntimeOption

WithStorageConfig uses the given configuration to set up container storage If this is not specified, the system default configuration will be used instead

type State

type State interface {
	// Accepts full ID of container
	GetContainer(id string) (*Container, error)
	// Accepts full or partial IDs (as long as they are unique) and names
	LookupContainer(idOrName string) (*Container, error)
	// Checks if a container with the given ID is present in the state
	HasContainer(id string) (bool, error)
	// Adds container to state
	// If the container belongs to a pod, that pod must already be present
	// in the state when the container is added
	AddContainer(ctr *Container) error
	// Removes container from state
	// If the container belongs to a pod, it will be removed from the pod
	// as well
	RemoveContainer(ctr *Container) error
	// Retrieves all containers presently in state
	GetAllContainers() ([]*Container, error)

	// Accepts full ID of pod
	GetPod(id string) (*Pod, error)
	// Accepts full or partial IDs (as long as they are unique) and names
	LookupPod(idOrName string) (*Pod, error)
	// Checks if a pod with the given ID is present in the state
	HasPod(id string) (bool, error)
	// Adds pod to state
	// Any containers within the pod not already in the state will be added
	// with it
	AddPod(pod *Pod) error
	// Removes pod from state
	// All containers within the pod will also be removed
	RemovePod(pod *Pod) error
	// Retrieves all pods presently in state
	GetAllPods() ([]*Pod, error)
}

State is a storage backend for libpod's current state

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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