libpod

package
v0.3.5 Latest Latest
Warning

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

Go to latest
Published: Mar 29, 2018 License: Apache-2.0 Imports: 71 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AttachPipeStdin  = 1
	AttachPipeStdout = 2
	AttachPipeStderr = 3
)

Sync with stdpipe_t in conmon.c

View Source
const (
	// CgroupfsCgroupsManager represents cgroupfs native cgroup manager
	CgroupfsCgroupsManager = "cgroupfs"
	// SystemdCgroupsManager represents systemd native cgroup manager
	SystemdCgroupsManager = "systemd"

	// ContainerCreateTimeout represents the value of container creating timeout
	ContainerCreateTimeout = 240 * time.Second

	// DefaultShmSize is the default shm size
	DefaultShmSize = 64 * 1024 * 1024
	// NsRunDir is the default directory in which running network namespaces
	// are stored
	NsRunDir = "/var/run/netns"
)
View Source
const (
	// InvalidStateStore is an invalid state store
	InvalidStateStore RuntimeStateStore = iota
	// InMemoryStateStore is an in-memory state that will not persist data
	// on containers and pods between libpod instances or after system
	// reboot
	InMemoryStateStore RuntimeStateStore = iota
	// SQLiteStateStore is a state backed by a SQLite database
	// It is presently disabled
	SQLiteStateStore RuntimeStateStore = iota
	// BoltDBStateStore is a state backed by a BoltDB database
	BoltDBStateStore RuntimeStateStore = iota

	// SeccompDefaultPath defines the default seccomp path
	SeccompDefaultPath = "/usr/share/containers/seccomp.json"
	// SeccompOverridePath if this exists it overrides the default seccomp path
	SeccompOverridePath = "/etc/crio/seccomp.json"

	// ConfigPath is the path to the libpod configuration file
	// This file is loaded to replace the builtin default config before
	// runtime options (e.g. WithStorageConfig) are applied.
	// If it is not present, the builtin default config is used instead
	// This path can be overridden when the runtime is created by using
	// NewRuntimeFromConfig() instead of NewRuntime()
	ConfigPath = "/usr/share/containers/libpod.conf"
	// OverrideConfigPath is the path to an override for the default libpod
	// configuration file. If OverrideConfigPath exists, it will be used in
	// place of the configuration file pointed to by ConfigPath.
	OverrideConfigPath = "/etc/containers/libpod.conf"
)
View Source
const CtrRemoveTimeout = 10

CtrRemoveTimeout is the default number of seconds to wait after stopping a container before sending the kill signal

View Source
const (
	// DefaultTransport is a prefix that we apply to an image name
	// to check docker hub first for the image
	DefaultTransport = "docker://"
)

Runtime API constants

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")

	// ErrCtrStateInvalid indicates a container is in an improper state for
	// the requested operation
	ErrCtrStateInvalid = errors.New("container state improper")

	// 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")
	// ErrEmptyID indicates that an empty ID was passed
	ErrEmptyID = errors.New("name or ID cannot be empty")

	// ErrInternal indicates an internal library error
	ErrInternal = errors.New("internal libpod error")

	// 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")

	// ErrDBClosed indicates that the connection to the state database has
	// already been closed
	ErrDBClosed = errors.New("database connection already closed")
	// ErrDBBadConfig indicates that the database has a different schema or
	// was created by a libpod with a different config
	ErrDBBadConfig = errors.New("database configuration mismatch")

	// 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()
	// DirTransport is the transport for pushing and pulling
	// images to and from a directory
	DirTransport = directory.Transport.Name()
	// TransportNames are the supported transports in string form
	TransportNames = [...]string{DefaultTransport, DockerArchive, OCIArchive, "ostree:", "dir:"}
	// TarballTransport is the transport for importing a tar archive
	// and creating a filesystem image
	TarballTransport = tarball.Transport.Name()
	// Docker is the transport for docker registries
	Docker = docker.Transport.Name()
	// Atomic is the transport for atomic registries
	Atomic = "atomic"
)
View Source
var DefaultCgroupParent = "/libpod_parent"

DefaultCgroupParent is the default prefix to a cgroup path in libpod

Functions

func CopyStringStringMap

func CopyStringStringMap(m map[string]string) map[string]string

CopyStringStringMap deep copies a map[string]string and returns the result

func FuncTimer

func FuncTimer(funcName string)

FuncTimer helps measure the execution time of a function For debug purposes, do not leave in code used like defer FuncTimer("foo")

func GetInsecureRegistries

func GetInsecureRegistries() ([]string, error)

GetInsecureRegistries obtains the list of inseure registries from the global registration file.

func GetPolicyContext

func GetPolicyContext(path string) (*signature.PolicyContext, error)

GetPolicyContext creates a signature policy context for the given signature policy path

func GetRegistries

func GetRegistries() ([]string, error)

GetRegistries gets the searchable registries from the global registration file.

func MountExists added in v0.2.2

func MountExists(specMounts []spec.Mount, dest string) bool

MountExists returns true if dest exists in the list of mounts

func RemoveScientificNotationFromFloat

func RemoveScientificNotationFromFloat(x float64) (float64, error)

RemoveScientificNotationFromFloat returns a float without any scientific notation if the number has any. golang does not handle conversion of float64s that have scientific notation in them and otherwise stinks. please replace this if you have a better implementation.

func SaveDefaultConfig added in v0.3.2

func SaveDefaultConfig(path string) error

SaveDefaultConfig saves a copy of the default config at the given path

func WaitForFile added in v0.3.1

func WaitForFile(path string, timeout time.Duration) error

WaitForFile waits until a file has been created or the given timeout has occurred

func WriteFile

func WriteFile(content string, path string) error

WriteFile writes a provided string to a provided path

Types

type BoltState

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

BoltState is a state implementation backed by a Bolt DB

func (*BoltState) AddContainer

func (s *BoltState) AddContainer(ctr *Container) error

AddContainer adds a container to the state The container being added cannot belong to a pod

func (*BoltState) AddContainerToPod

func (s *BoltState) AddContainerToPod(pod *Pod, ctr *Container) error

AddContainerToPod adds the given container to an existing pod The container will be added to the state and the pod

func (*BoltState) AddPod

func (s *BoltState) AddPod(pod *Pod) error

AddPod adds the given pod to the state.

func (*BoltState) AllContainers

func (s *BoltState) AllContainers() ([]*Container, error)

AllContainers retrieves all the containers in the database

func (*BoltState) AllPods

func (s *BoltState) AllPods() ([]*Pod, error)

AllPods returns all pods present in the state

func (*BoltState) Close

func (s *BoltState) Close() error

Close closes the state and prevents further use

func (*BoltState) Container

func (s *BoltState) Container(id string) (*Container, error)

Container retrieves a single container from the state by its full ID

func (*BoltState) ContainerInUse

func (s *BoltState) ContainerInUse(ctr *Container) ([]string, error)

ContainerInUse checks if other containers depend on the given container It returns a slice of the IDs of the containers depending on the given container. If the slice is empty, no containers depend on the given container

func (*BoltState) HasContainer

func (s *BoltState) HasContainer(id string) (bool, error)

HasContainer checks if a container is present in the state

func (*BoltState) HasPod

func (s *BoltState) HasPod(id string) (bool, error)

HasPod checks if a pod with the given ID exists in the state

func (*BoltState) LookupContainer

func (s *BoltState) LookupContainer(idOrName string) (*Container, error)

LookupContainer retrieves a container from the state by full or unique partial ID or name

func (*BoltState) LookupPod

func (s *BoltState) LookupPod(idOrName string) (*Pod, error)

LookupPod retrieves a pod from full or unique partial ID or name

func (*BoltState) Pod

func (s *BoltState) Pod(id string) (*Pod, error)

Pod retrieves a pod given its full ID

func (*BoltState) PodContainers

func (s *BoltState) PodContainers(pod *Pod) ([]*Container, error)

PodContainers returns all the containers present in the given pod

func (*BoltState) PodContainersByID

func (s *BoltState) PodContainersByID(pod *Pod) ([]string, error)

PodContainersByID returns the IDs of all containers present in the given pod

func (*BoltState) PodHasContainer

func (s *BoltState) PodHasContainer(pod *Pod, id string) (bool, error)

PodHasContainer checks if the given pod has a container with the given ID

func (*BoltState) Refresh

func (s *BoltState) Refresh() error

Refresh clears container and pod states after a reboot

func (*BoltState) RemoveContainer

func (s *BoltState) RemoveContainer(ctr *Container) error

RemoveContainer removes a container from the state Only removes containers not in pods - for containers that are a member of a pod, use RemoveContainerFromPod

func (*BoltState) RemoveContainerFromPod

func (s *BoltState) RemoveContainerFromPod(pod *Pod, ctr *Container) error

RemoveContainerFromPod removes a container from an existing pod The container will also be removed from the state

func (*BoltState) RemovePod

func (s *BoltState) RemovePod(pod *Pod) error

RemovePod removes the given pod from the state Only empty pods can be removed

func (*BoltState) RemovePodContainers

func (s *BoltState) RemovePodContainers(pod *Pod) error

RemovePodContainers removes all containers in a pod

func (*BoltState) SaveContainer

func (s *BoltState) SaveContainer(ctr *Container) error

SaveContainer saves a container's current state in the database

func (*BoltState) UpdateContainer

func (s *BoltState) UpdateContainer(ctr *Container) error

UpdateContainer updates a container's state from the database

type Container

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

Container is a single OCI container ffjson: skip

func (*Container) AddArtifact

func (c *Container) AddArtifact(name string, data []byte) error

AddArtifact creates and writes to an artifact file for the container

func (*Container) Attach

func (c *Container) Attach(noStdin bool, keys string) error

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

func (*Container) Batch

func (c *Container) Batch(batchFunc func(*Container) error) error

Batch starts a batch operation on the given container All commands in the passed function will execute under the same lock and without syncronyzing state after each operation This will result in substantial performance benefits when running numerous commands on the same container Note that the container passed into the Batch function cannot be removed during batched operations. runtime.RemoveContainer can only be called outside of Batch Any error returned by the given batch function will be returned unmodified by Batch As Batch normally disables updating the current state of the container, the Sync() function is provided to enable container state to be updated and checked within Batch.

func (*Container) BindMounts added in v0.3.2

func (c *Container) BindMounts() (map[string]string, error)

BindMounts retrieves bind mounts that were created by libpod and will be added to the container All these mounts except /dev/shm are ignored if a mount in the given spec has the same destination These mounts include /etc/resolv.conf, /etc/hosts, and /etc/hostname The return is formatted as a map from destination (mountpoint in the container) to source (path of the file that will be mounted into the container) If the container has not been started yet, an empty map will be returned, as the files in question are only created when the container is started.

func (*Container) CGroupPath

func (c *Container) CGroupPath() cgroups.Path

CGroupPath returns a cgroups "path" for a given container.

func (*Container) CgroupParent added in v0.2.2

func (c *Container) CgroupParent() string

CgroupParent gets the container's CGroup parent

func (*Container) Cleanup

func (c *Container) Cleanup() error

Cleanup unmounts all mount points in container and cleans up container storage It also cleans up the network stack

func (*Container) Commit

func (c *Container) Commit(pause bool, reference string, writer io.Writer, signingOptions image.SigningOptions, imageConfig ociv1.Image) (*image.Image, error)

Commit commits the changes between a container and its image, creating a new image

func (*Container) Config

func (c *Container) Config() *ContainerConfig

Config returns the configuration used to create the container

func (*Container) CreatedTime added in v0.2.2

func (c *Container) CreatedTime() time.Time

CreatedTime gets the time when the container was created

func (*Container) DNSOption added in v0.2.2

func (c *Container) DNSOption() []string

DNSOption returns the DNS options that will be used in the container's resolv.conf If empty, options from the host's resolv.conf will be used instead

func (*Container) DNSSearch added in v0.2.2

func (c *Container) DNSSearch() []string

DNSSearch returns the DNS search domains that will be used in the container's resolv.conf If empty, DNS Search domains from the host's resolv.conf will be used instead

func (*Container) DNSServers added in v0.2.2

func (c *Container) DNSServers() []net.IP

DNSServers returns DNS servers that will be used in the container's resolv.conf If empty, DNS server from the host's resolv.conf will be used instead

func (*Container) Dependencies

func (c *Container) Dependencies() []string

Dependencies gets the containers this container depends upon

func (*Container) Exec

func (c *Container) Exec(tty, privileged bool, env, cmd []string, user string) error

Exec starts a new process inside the container TODO allow specifying streams to attach to TODO investigate allowing exec without attaching

func (*Container) ExecSession added in v0.3.1

func (c *Container) ExecSession(id string) (*ExecSession, error)

ExecSession retrieves detailed information on a single active exec session in a container

func (*Container) ExecSessions added in v0.3.1

func (c *Container) ExecSessions() ([]string, error)

ExecSessions retrieves active exec sessions running in the container

func (*Container) ExitCode

func (c *Container) ExitCode() (int32, error)

ExitCode returns the exit code of the container as an int32

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) FinishedTime

func (c *Container) FinishedTime() (time.Time, error)

FinishedTime is the time the container was stopped

func (*Container) GetArtifact

func (c *Container) GetArtifact(name string) ([]byte, error)

GetArtifact reads the specified artifact file from the container

func (*Container) GetContainerPidInformation

func (c *Container) GetContainerPidInformation(args []string) ([]string, error)

GetContainerPidInformation calls ps with the appropriate options and returns the results as a string and the container's PIDs as a []string

func (*Container) GetContainerPids

func (c *Container) GetContainerPids() ([]string, error)

GetContainerPids reads sysfs to obtain the pids associated with the container's cgroup and uses locking

func (*Container) GetContainerStats

func (c *Container) GetContainerStats(previousStats *ContainerStats) (*ContainerStats, error)

GetContainerStats gets the running stats for a given container

func (*Container) Hostname added in v0.2.2

func (c *Container) Hostname() string

Hostname gets the container's hostname

func (*Container) HostsAdd added in v0.2.2

func (c *Container) HostsAdd() []string

HostsAdd returns hosts that will be added to the container's hosts file The host system's hosts file is used as a base, and these are appended to it

func (*Container) ID

func (c *Container) ID() string

ID returns the container's ID

func (*Container) IPs added in v0.3.1

func (c *Container) IPs() ([]net.IPNet, error)

IPs retrieves a container's IP address(es) This will only be populated if the container is configured to created a new network namespace, and that namespace is presently active

func (*Container) Image added in v0.2.2

func (c *Container) Image() (string, string)

Image returns the ID and name of the image used as the container's rootfs

func (*Container) ImageVolumes added in v0.2.2

func (c *Container) ImageVolumes() bool

ImageVolumes returns whether the container is configured to create persistent volumes requested by the image

func (*Container) Init

func (c *Container) Init() (err error)

Init creates a container in the OCI runtime

func (*Container) Inspect

func (c *Container) Inspect(size bool) (*inspect.ContainerInspectData, error)

Inspect a container for low-level information

func (*Container) Kill

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

Kill sends a signal to a container

func (*Container) Labels

func (c *Container) Labels() map[string]string

Labels returns the container's labels

func (*Container) LogPath

func (c *Container) LogPath() string

LogPath returns the path to the container's log file This file will only be present after Init() is called to create the container in the runtime

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) MountLabel added in v0.2.2

func (c *Container) MountLabel() string

MountLabel returns the SELinux mount label of the container

func (*Container) Mounted

func (c *Container) Mounted() (bool, error)

Mounted returns a bool as to if the container's storage is mounted

func (*Container) Mountpoint

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

Mountpoint returns the path to the container's mounted storage as a string If the container is not mounted, no error is returned, but the mountpoint will be ""

func (*Container) Name

func (c *Container) Name() string

Name returns the container's name

func (*Container) NamespacePath

func (c *Container) NamespacePath(ns LinuxNS) (string, error)

NamespacePath returns the path of one of the container's namespaces If the container is not running, an error will be returned

func (*Container) NewNetNS added in v0.2.2

func (c *Container) NewNetNS() bool

NewNetNS returns whether the container will create a new network namespace

func (*Container) OOMKilled added in v0.2.2

func (c *Container) OOMKilled() (bool, error)

OOMKilled returns whether the container was killed by an OOM condition

func (*Container) PID

func (c *Container) PID() (int, error)

PID returns the PID of the container If the container is not running, a pid of 0 will be returned. No error will occur.

func (*Container) Pause

func (c *Container) Pause() error

Pause pauses a container

func (*Container) PodID

func (c *Container) PodID() string

PodID returns the full ID of the pod the container belongs to, or "" if it does not belong to a pod

func (*Container) PortMappings added in v0.2.2

func (c *Container) PortMappings() []ocicni.PortMapping

PortMappings returns the ports that will be mapped into a container if a new network namespace is created If NewNetNS() is false, this value is unused

func (*Container) Privileged added in v0.2.2

func (c *Container) Privileged() bool

Privileged returns whether the container is privileged

func (*Container) ProcessLabel

func (c *Container) ProcessLabel() string

ProcessLabel returns the selinux ProcessLabel of the container

func (*Container) RWSize

func (c *Container) RWSize() (int64, error)

RWSize returns the rw size of the container

func (*Container) RemoveArtifact

func (c *Container) RemoveArtifact(name string) error

RemoveArtifact deletes the specified artifacts file

func (*Container) RootFsSize

func (c *Container) RootFsSize() (int64, error)

RootFsSize returns the root FS size of the container

func (*Container) Routes added in v0.3.1

func (c *Container) Routes() ([]types.Route, error)

Routes retrieves a container's routes This will only be populated if the container is configured to created a new network namespace, and that namespace is presently active

func (*Container) RuntimeName

func (c *Container) RuntimeName() string

RuntimeName returns the name of the runtime

func (*Container) ShmDir

func (c *Container) ShmDir() string

ShmDir returns the sources path to be mounted on /dev/shm in container

func (*Container) ShmSize added in v0.2.2

func (c *Container) ShmSize() int64

ShmSize returns the size of SHM device to be mounted into the container

func (*Container) Spec

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

Spec returns the container's OCI runtime spec The spec returned is the one used to create the container. The running spec may differ slightly as mounts are added based on the image

func (*Container) Start

func (c *Container) Start() (err error)

Start starts a container Start can start created or stopped containers Stopped containers will be deleted and re-created in runc, undergoing a fresh Init()

func (*Container) StartAndAttach added in v0.3.3

func (c *Container) StartAndAttach(noStdin bool, keys string) (attachResChan <-chan error, err error)

StartAndAttach starts a container and attaches to it StartAndAttach can start created or stopped containers Stopped containers will be deleted and re-created in runc, undergoing a fresh Init() If successful, an error channel will be returned containing the result of the attach call. The channel will be closed automatically after the result of attach has been sent

func (*Container) StartedTime

func (c *Container) StartedTime() (time.Time, error)

StartedTime is the time the container was started

func (*Container) State

func (c *Container) State() (ContainerStatus, error)

State returns the current state of the container

func (*Container) StaticDir added in v0.2.2

func (c *Container) StaticDir() string

StaticDir returns the directory used to store persistent container files

func (*Container) Stdin added in v0.2.2

func (c *Container) Stdin() bool

Stdin returns whether STDIN on the container will be kept open

func (*Container) Stop

func (c *Container) Stop() error

Stop uses the container's stop signal (or SIGTERM if no signal was specified) to stop the container, and if it has not stopped after container's stop timeout, SIGKILL is used to attempt to forcibly stop the container Default stop timeout is 10 seconds, but can be overridden when the container is created

func (*Container) StopSignal added in v0.2.2

func (c *Container) StopSignal() uint

StopSignal is the signal that will be used to stop the container If it fails to stop the container, SIGKILL will be used after a timeout If StopSignal is 0, the default signal of SIGTERM will be used

func (*Container) StopTimeout

func (c *Container) StopTimeout() uint

StopTimeout returns the container's stop timeout If the container's default stop signal fails to kill the container, SIGKILL will be used after this timeout

func (*Container) StopWithTimeout

func (c *Container) StopWithTimeout(timeout uint) error

StopWithTimeout is a version of Stop that allows a timeout to be specified manually. If timeout is 0, SIGKILL will be used immediately to kill the container.

func (*Container) Sync

func (c *Container) Sync() error

Sync updates the current state of the container, checking whether its state has changed Sync can only be used inside Batch() - otherwise, it will be done automatically. When called outside Batch(), Sync() is a no-op

func (*Container) Unmount

func (c *Container) Unmount() error

Unmount unmounts a container's filesystem on the host

func (*Container) Unpause

func (c *Container) Unpause() error

Unpause unpauses a container

func (*Container) User added in v0.2.2

func (c *Container) User() string

User returns the user who the container is run as

func (*Container) Wait

func (c *Container) Wait() (int32, error)

Wait blocks on a container to exit and returns its exit code

type ContainerConfig

type ContainerConfig struct {
	Spec *spec.Spec `json:"spec"`
	ID   string     `json:"id"`
	Name string     `json:"name"`
	// Full ID of the pood the container belongs to
	Pod string `json:"pod,omitempty"`

	// Storage Config
	// Information on the image used for the root filesystem
	RootfsImageID   string `json:"rootfsImageID,omitempty"`
	RootfsImageName string `json:"rootfsImageName,omitempty"`
	// Whether to mount volumes specified in the image
	ImageVolumes bool `json:"imageVolumes"`
	// Src path to be mounted on /dev/shm in container
	ShmDir string `json:"ShmDir,omitempty"`
	// Size of the container's SHM
	ShmSize int64 `json:"shmSize"`
	// Static directory for container content that will persist across
	// reboot
	StaticDir string `json:"staticDir"`
	// Mounts list contains all additional mounts into the container rootfs
	// These include the SHM mount
	// These must be unmounted before the container's rootfs is unmounted
	Mounts []string `json:"mounts,omitempty"`

	// Security Config
	// Whether the container is privileged
	Privileged bool `json:"privileged"`
	// SELinux process label for container
	ProcessLabel string `json:"ProcessLabel,omitempty"`
	// SELinux mount label for root filesystem
	MountLabel string `json:"MountLabel,omitempty"`
	// User and group to use in the container
	// Can be specified by name or UID/GID
	User string `json:"user,omitempty"`

	// Namespace Config
	// IDs of container to share namespaces with
	// NetNsCtr conflicts with the CreateNetNS bool
	IPCNsCtr    string `json:"ipcNsCtr,omitempty"`
	MountNsCtr  string `json:"mountNsCtr,omitempty"`
	NetNsCtr    string `json:"netNsCtr,omitempty"`
	PIDNsCtr    string `json:"pidNsCtr,omitempty"`
	UserNsCtr   string `json:"userNsCtr,omitempty"`
	UTSNsCtr    string `json:"utsNsCtr,omitempty"`
	CgroupNsCtr string `json:"cgroupNsCtr,omitempty"`

	// Network Config
	// CreateNetNS indicates that libpod should create and configure a new
	// network namespace for the container
	// This cannot be set if NetNsCtr is also set
	CreateNetNS bool `json:"createNetNS"`
	// PortMappings are the ports forwarded to the container's network
	// namespace
	// These are not used unless CreateNetNS is true
	PortMappings []ocicni.PortMapping `json:"portMappings,omitempty"`
	// DNS servers to use in container resolv.conf
	// Will override servers in host resolv if set
	DNSServer []net.IP `json:"dnsServer,omitempty"`
	// DNS Search domains to use in container resolv.conf
	// Will override search domains in host resolv if set
	DNSSearch []string `json:"dnsSearch,omitempty"`
	// DNS options to be set in container resolv.conf
	// With override options in host resolv if set
	DNSOption []string `json:"dnsOption,omitempty"`
	// Hosts to add in container
	// Will be appended to host's host file
	HostAdd []string `json:"hostsAdd,omitempty"`

	// Misc Options
	// Whether to keep container STDIN open
	Stdin bool `json:"stdin,omitempty"`
	// Labels is a set of key-value pairs providing additional information
	// about a container
	Labels map[string]string `json:"labels,omitempty"`
	// StopSignal is the signal that will be used to stop the container
	StopSignal uint `json:"stopSignal,omitempty"`
	// StopTimeout is the signal that will be used to stop the container
	StopTimeout uint `json:"stopTimeout,omitempty"`
	// Time container was created
	CreatedTime time.Time `json:"createdTime"`
	// Cgroup parent of the container
	CgroupParent string `json:"cgroupParent"`
	// LogPath log location
	LogPath string `json:"logPath"`
	// File containing the conmon PID
	ConmonPidFile string `json:"conmonPidFile,omitempty"`
}

ContainerConfig contains all information that was used to create the container. It may not be changed once created. It is stored, read-only, on disk

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 ContainerInfo

type ContainerInfo struct {
	Dir    string
	RunDir string
	Config *v1.Image
}

ContainerInfo wraps a subset of information about a container: the locations of its nonvolatile and volatile per-container directories, along with a copy of the configuration blob from the image that was used to create the container, if the image had a configuration.

type ContainerStats

type ContainerStats struct {
	ContainerID string
	Name        string
	CPU         float64
	CPUNano     uint64
	SystemNano  uint64
	MemUsage    uint64
	MemLimit    uint64
	MemPerc     float64
	NetInput    uint64
	NetOutput   uint64
	BlockInput  uint64
	BlockOutput uint64
	PIDs        uint64
}

ContainerStats contains the statistics information for a running container

type ContainerStatus

type ContainerStatus int

ContainerStatus represents the current state of a container

const (
	// ContainerStateUnknown indicates that the container is in an error
	// state where information about it cannot be retrieved
	ContainerStateUnknown ContainerStatus = iota
	// ContainerStateConfigured indicates that the container has had its
	// storage configured but it has not been created in the OCI runtime
	ContainerStateConfigured ContainerStatus = iota
	// ContainerStateCreated indicates the container has been created in
	// the OCI runtime but not started
	ContainerStateCreated ContainerStatus = iota
	// ContainerStateRunning indicates the container is currently executing
	ContainerStateRunning ContainerStatus = iota
	// ContainerStateStopped indicates that the container was running but has
	// exited
	ContainerStateStopped ContainerStatus = iota
	// ContainerStatePaused indicates that the container has been paused
	ContainerStatePaused ContainerStatus = iota
)

func (ContainerStatus) String

func (t ContainerStatus) String() string

ContainerStatus returns a string representation for users of a container state

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
	// AuthFile is the path of the cached credentials file defined by the user
	AuthFile string
	// Writer is the reportWriter for the output
	Writer io.Writer
	// Reference is the name for the image created when a tar archive is imported
	Reference string
	// ImageConfig is the Image spec for the image created when a tar archive is imported
	ImageConfig ociv1.Image
	// ManifestMIMEType is the manifest type of the image when saving to a directory
	ManifestMIMEType string
	// ForceCompress compresses the image layers when saving to a directory using the dir transport if true
	ForceCompress bool
}

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 WithCgroupNSFrom

func WithCgroupNSFrom(nsCtr *Container) CtrCreateOption

WithCgroupNSFrom indicates the the container should join the CGroup namespace of the given container If the container has joined a pod, it can only join the namespaces of containers in the same pod

func WithCgroupParent

func WithCgroupParent(parent string) CtrCreateOption

WithCgroupParent sets the Cgroup Parent of the new container

func WithConmonPidFile added in v0.3.5

func WithConmonPidFile(path string) CtrCreateOption

WithConmonPidFile specifies the path to the file that receives the pid of conmon

func WithDNS

func WithDNS(dnsServers []string) CtrCreateOption

WithDNS sets additional name servers for the container

func WithDNSOption

func WithDNSOption(dnsOptions []string) CtrCreateOption

WithDNSOption sets addition dns options for the container

func WithDNSSearch

func WithDNSSearch(searchDomains []string) CtrCreateOption

WithDNSSearch sets the additional search domains of a container

func WithHosts

func WithHosts(hosts []string) CtrCreateOption

WithHosts sets additional host:IP for the hosts file

func WithIPCNSFrom

func WithIPCNSFrom(nsCtr *Container) CtrCreateOption

WithIPCNSFrom indicates the the container should join the IPC namespace of the given container If the container has joined a pod, it can only join the namespaces of containers in the same pod

func WithLabels

func WithLabels(labels map[string]string) CtrCreateOption

WithLabels adds labels to the container

func WithLogPath

func WithLogPath(path string) CtrCreateOption

WithLogPath sets the path to the log file

func WithMountNSFrom

func WithMountNSFrom(nsCtr *Container) CtrCreateOption

WithMountNSFrom indicates the the container should join the mount namespace of the given container If the container has joined a pod, it can only join the namespaces of containers in the same pod

func WithName

func WithName(name string) CtrCreateOption

WithName sets the container's name

func WithNetNS

func WithNetNS(portMappings []ocicni.PortMapping) CtrCreateOption

WithNetNS indicates that the container should be given a new network namespace with a minimal configuration An optional array of port mappings can be provided Conflicts with WithNetNSFrom()

func WithNetNSFrom

func WithNetNSFrom(nsCtr *Container) CtrCreateOption

WithNetNSFrom indicates the the container should join the network namespace of the given container If the container has joined a pod, it can only join the namespaces of containers in the same pod

func WithPIDNSFrom

func WithPIDNSFrom(nsCtr *Container) CtrCreateOption

WithPIDNSFrom indicates the the container should join the PID namespace of the given container If the container has joined a pod, it can only join the namespaces of containers in the same pod

func WithPrivileged

func WithPrivileged(privileged bool) CtrCreateOption

WithPrivileged sets the privileged flag in the container runtime

func WithRootFSFromImage

func WithRootFSFromImage(imageID string, imageName string, useImageVolumes 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 TODO: Replace image name and ID with a libpod.Image struct when that is finished

func WithSELinuxLabels

func WithSELinuxLabels(processLabel, mountLabel string) CtrCreateOption

WithSELinuxLabels sets the mount label for SELinux

func WithShmDir

func WithShmDir(dir string) CtrCreateOption

WithShmDir sets the directory that should be mounted on /dev/shm

func WithShmSize

func WithShmSize(size int64) CtrCreateOption

WithShmSize sets the size of /dev/shm tmpfs mount

func WithStdin

func WithStdin() CtrCreateOption

WithStdin keeps stdin on the container open to allow interaction

func WithStopSignal

func WithStopSignal(signal syscall.Signal) CtrCreateOption

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

func WithStopTimeout

func WithStopTimeout(timeout uint) CtrCreateOption

WithStopTimeout sets the time to after initial stop signal is sent to container, before sending the kill signal

func WithUTSNSFrom

func WithUTSNSFrom(nsCtr *Container) CtrCreateOption

WithUTSNSFrom indicates the the container should join the UTS namespace of the given container If the container has joined a pod, it can only join the namespaces of containers in the same pod

func WithUser

func WithUser(user string) CtrCreateOption

WithUser sets the user identity field in configutation Valid uses [user | user:group | uid | uid:gid | user:gid | uid:group ]

func WithUserNSFrom

func WithUserNSFrom(nsCtr *Container) CtrCreateOption

WithUserNSFrom indicates the the container should join the user namespace of the given container If the container has joined a pod, it can only join the namespaces of containers in the same pod

type ExecSession added in v0.3.1

type ExecSession struct {
	ID      string   `json:"id"`
	Command []string `json:"command"`
	PID     int      `json:"pid"`
}

ExecSession contains information on an active exec session

type InMemoryState

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

An InMemoryState is a purely in-memory state store

func (*InMemoryState) AddContainer

func (s *InMemoryState) AddContainer(ctr *Container) error

AddContainer adds a container to the state Containers in a pod cannot be added to the state

func (*InMemoryState) AddContainerToPod

func (s *InMemoryState) AddContainerToPod(pod *Pod, ctr *Container) error

AddContainerToPod adds a container to the given pod, also adding it to the state

func (*InMemoryState) AddPod

func (s *InMemoryState) AddPod(pod *Pod) error

AddPod adds a given pod to the state

func (*InMemoryState) AllContainers

func (s *InMemoryState) AllContainers() ([]*Container, error)

AllContainers retrieves all containers from the state

func (*InMemoryState) AllPods

func (s *InMemoryState) AllPods() ([]*Pod, error)

AllPods retrieves all pods currently in the state

func (*InMemoryState) Close

func (s *InMemoryState) Close() error

Close the state before shutdown This is a no-op as we have no backing disk

func (*InMemoryState) Container

func (s *InMemoryState) Container(id string) (*Container, error)

Container retrieves a container from its full ID

func (*InMemoryState) ContainerInUse

func (s *InMemoryState) ContainerInUse(ctr *Container) ([]string, error)

ContainerInUse checks if the given container is being used by other containers

func (*InMemoryState) HasContainer

func (s *InMemoryState) HasContainer(id string) (bool, error)

HasContainer checks if a container with the given ID is present in the state

func (*InMemoryState) HasPod

func (s *InMemoryState) HasPod(id string) (bool, error)

HasPod checks if a pod with the given ID is present in the state

func (*InMemoryState) LookupContainer

func (s *InMemoryState) LookupContainer(idOrName string) (*Container, error)

LookupContainer retrieves a container by full ID, unique partial ID, or name

func (*InMemoryState) LookupPod

func (s *InMemoryState) LookupPod(idOrName string) (*Pod, error)

LookupPod retrieves a pod from the state from a full or unique partial ID or a full name

func (*InMemoryState) Pod

func (s *InMemoryState) Pod(id string) (*Pod, error)

Pod retrieves a pod from the state from its full ID

func (*InMemoryState) PodContainers

func (s *InMemoryState) PodContainers(pod *Pod) ([]*Container, error)

PodContainers retrieves the containers from a pod

func (*InMemoryState) PodContainersByID

func (s *InMemoryState) PodContainersByID(pod *Pod) ([]string, error)

PodContainersByID returns the IDs of all containers in the given pod

func (*InMemoryState) PodHasContainer

func (s *InMemoryState) PodHasContainer(pod *Pod, ctrID string) (bool, error)

PodHasContainer checks if the given pod has a container with the given ID

func (*InMemoryState) Refresh

func (s *InMemoryState) Refresh() error

Refresh clears container and pod stats after a reboot In-memory state won't survive a reboot so this is a no-op

func (*InMemoryState) RemoveContainer

func (s *InMemoryState) RemoveContainer(ctr *Container) error

RemoveContainer removes a container from the state The container will only be removed from the state, not from the pod the container belongs to

func (*InMemoryState) RemoveContainerFromPod

func (s *InMemoryState) RemoveContainerFromPod(pod *Pod, ctr *Container) error

RemoveContainerFromPod removes the given container from the given pod The container is also removed from the state

func (*InMemoryState) RemovePod

func (s *InMemoryState) RemovePod(pod *Pod) error

RemovePod removes a given pod from the state Only empty pods can be removed

func (*InMemoryState) RemovePodContainers

func (s *InMemoryState) RemovePodContainers(pod *Pod) error

RemovePodContainers removes all containers from a pod This is used to simultaneously remove a number of containers with many interdependencies Will only remove containers if no dependencies outside of the pod are present

func (*InMemoryState) SaveContainer

func (s *InMemoryState) SaveContainer(ctr *Container) error

SaveContainer saves a container's state As all state is in-memory, any changes are always reflected as soon as they are made As such this is a no-op

func (*InMemoryState) UpdateContainer

func (s *InMemoryState) UpdateContainer(ctr *Container) error

UpdateContainer updates a container's state As all state is in-memory, no update will be required As such this is a no-op

type InfoData

type InfoData struct {
	Type string
	Data map[string]interface{}
}

InfoData holds the info type, i.e store, host etc and the data for each type

type LinuxNS

type LinuxNS int

LinuxNS represents a Linux namespace

const (
	// InvalidNS is an invalid namespace
	InvalidNS LinuxNS = iota
	// IPCNS is the IPC namespace
	IPCNS LinuxNS = iota
	// MountNS is the mount namespace
	MountNS LinuxNS = iota
	// NetNS is the network namespace
	NetNS LinuxNS = iota
	// PIDNS is the PID namespace
	PIDNS LinuxNS = iota
	// UserNS is the user namespace
	UserNS LinuxNS = iota
	// UTSNS is the UTS namespace
	UTSNS LinuxNS = iota
	// CgroupNS is the CGroup namespace
	CgroupNS LinuxNS = iota
)

func (LinuxNS) String

func (ns LinuxNS) String() string

String returns a string representation of a Linux namespace It is guaranteed to be the name of the namespace in /proc for valid ns types

type OCIRuntime

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

OCIRuntime represents an OCI-compatible runtime that libpod can call into to perform container operations

type Pod

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

Pod represents a group of containers that may share namespaces ffjson: skip

func (*Pod) AllContainers

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

AllContainers retrieves the containers in the pod

func (*Pod) AllContainersByID

func (p *Pod) AllContainersByID() ([]string, error)

AllContainersByID returns the container IDs of all the containers in the pod

func (*Pod) HasContainer

func (p *Pod) HasContainer(id string) (bool, error)

HasContainer checks if a container is present 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) (map[string]error, error)

Kill sends a signal to all running containers within a pod Signals will only be sent to running containers. Containers that are not running will be ignored. All signals are sent independently, and sending will continue even if some containers encounter errors. An error and a map[string]error are returned If the error is not nil and the map is nil, an error was encountered before any containers were signalled If map is not nil, an error was encountered when signalling one or more containers. The container ID is mapped to the error encountered. The error is set to ErrCtrExists If both error and the map are nil, all containers were signalled successfully

func (*Pod) Labels

func (p *Pod) Labels() map[string]string

Labels returns the pod's labels

func (*Pod) Name

func (p *Pod) Name() string

Name retrieves the pod's name

func (*Pod) Start

func (p *Pod) Start() (map[string]error, error)

Start starts all containers within a pod It combines the effects of Init() and Start() on a container If a container has already been initialized it will be started, otherwise it will be initialized then started. Containers that are already running or have been paused are ignored All containers are started independently, in order dictated by their dependencies. An error and a map[string]error are returned If the error is not nil and the map is nil, an error was encountered before any containers were started If map is not nil, an error was encountered when starting one or more containers. The container ID is mapped to the error encountered. The error is set to ErrCtrExists If both error and the map are nil, all containers were started successfully

func (*Pod) Status

func (p *Pod) Status() (map[string]ContainerStatus, error)

Status gets the status of all containers in the pod Returns a map of Container ID to Container Status

func (*Pod) Stop

func (p *Pod) Stop(cleanup bool) (map[string]error, error)

Stop stops all containers within a pod that are not already stopped Each container will use its own stop timeout Only running containers will be stopped. Paused, stopped, or created containers will be ignored. If cleanup is true, mounts and network namespaces will be cleaned up after the container is stopped. All containers are stopped independently. An error stopping one container will not prevent other containers being stopped. An error and a map[string]error are returned If the error is not nil and the map is nil, an error was encountered before any containers were stopped If map is not nil, an error was encountered when stopping one or more containers. The container ID is mapped to the error encountered. The error is set to ErrCtrExists If both error and the map are nil, all containers were stopped without error

type PodConfig

type PodConfig struct {
	ID     string            `json:"id"`
	Name   string            `json:"name"`
	Labels map[string]string `json:""`
}

PodConfig represents a pod's static configuration

type PodCreateOption

type PodCreateOption func(*Pod) error

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

func WithPodLabels

func WithPodLabels(labels map[string]string) PodCreateOption

WithPodLabels sets the labels of a pod

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 *Runtime, err error)

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

func NewRuntimeFromConfig added in v0.3.2

func NewRuntimeFromConfig(configPath string, options ...RuntimeOption) (runtime *Runtime, err error)

NewRuntimeFromConfig creates a new container runtime using the given configuration file for its default configuration. Passed RuntimeOption functions can be used to mutate this configuration further. An error will be returned if the configuration file at the given path does not exist or cannot be loaded

func (*Runtime) GetAllContainers

func (r *Runtime) GetAllContainers() ([]*Container, error)

GetAllContainers is a helper function for GetContainers

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) GetContainers

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

GetContainers 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) GetContainersByList

func (r *Runtime) GetContainersByList(containers []string) ([]*Container, error)

GetContainersByList is a helper function for GetContainers which takes a []string of container IDs or names

func (*Runtime) GetDiff

func (r *Runtime) GetDiff(from, to string) ([]archive.Change, error)

GetDiff returns the differences between the two images, layers, or containers

func (*Runtime) GetLatestContainer

func (r *Runtime) GetLatestContainer() (*Container, error)

GetLatestContainer returns a container object of the latest created container.

func (*Runtime) GetPod

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

GetPod retrieves a pod by its ID

func (*Runtime) GetRunningContainers

func (r *Runtime) GetRunningContainers() ([]*Container, error)

GetRunningContainers is a helper function for GetContainers

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) ImageRuntime added in v0.3.4

func (r *Runtime) ImageRuntime() *image.Runtime

ImageRuntime returns the imageruntime for image resolution

func (*Runtime) Info

func (r *Runtime) Info() ([]InfoData, error)

Info returns the store and host information

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(rSpec *spec.Spec, options ...CtrCreateOption) (c *Container, err 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) 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 *image.Image, force bool) (string, error)

RemoveImage deletes an image from local storage Images being used by running containers can only be removed if force=true

func (*Runtime) RemovePod

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

RemovePod removes a pod If removeCtrs is specified, containers will be removed Otherwise, a pod that is not empty will return an error and not be removed If force is specified with removeCtrs, all containers will be stopped before being removed Otherwise, the pod will not be removed if any containers are running

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) WithPod

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

WithPod adds the container to a pod Containers which join a pod can only join the namespaces of other containers in the same pod

type RuntimeConfig

type RuntimeConfig struct {
	// StorageConfig is the configuration used by containers/storage
	// Not included in on-disk config, use the dedicated containers/storage
	// configuration file instead
	StorageConfig storage.StoreOptions `toml:"-"`
	// ImageDefaultTransport is the default transport method used to fetch
	// images
	ImageDefaultTransport string `toml:"image_default_transport"`
	// SignaturePolicyPath is the path to a signature policy to use for
	// validating images
	// If left empty, the containers/image default signature policy will
	// be used
	SignaturePolicyPath string `toml:"signature_policy_path,omitempty"`
	// StateType is the type of the backing state store.
	// Avoid using multiple values for this with the same containers/storage
	// configuration on the same system. Different state types do not
	// interact, and each will see a separate set of containers, which may
	// cause conflicts in containers/storage
	// As such this is not exposed via the config file
	StateType RuntimeStateStore `toml:"-"`
	// RuntimePath is the path to OCI runtime binary for launching
	// containers
	// The first path pointing to a valid file will be used
	RuntimePath []string `toml:"runtime_path"`
	// ConmonPath is the path to the Conmon binary used for managing
	// containers
	// The first path pointing to a valid file will be used
	ConmonPath []string `toml:"conmon_path"`
	// ConmonEnvVars are environment variables to pass to the Conmon binary
	// when it is launched
	ConmonEnvVars []string `toml:"conmon_env_vars"`
	// CGroupManager is the CGroup Manager to use
	// Valid values are "cgroupfs" and "systemd"
	CgroupManager string `toml:"cgroup_manager"`
	// StaticDir is the path to a persistent directory to store container
	// files
	StaticDir string `toml:"static_dir"`
	// TmpDir is the path to a temporary directory to store per-boot
	// container files
	// Must be stored in a tmpfs
	TmpDir string `toml:"tmp_dir"`
	// MaxLogSize is the maximum size of container logfiles
	MaxLogSize int64 `toml:"max_log_size,omitempty"`
	// NoPivotRoot sets whether to set no-pivot-root in the OCI runtime
	NoPivotRoot bool `toml:"no_pivot_root"`
	// CNIConfigDir sets the directory where CNI configuration files are
	// stored
	CNIConfigDir string `toml:"cni_config_dir"`
	// CNIPluginDir sets a number of directories where the CNI network
	// plugins can be located
	CNIPluginDir []string `toml:"cni_plugin_dir"`
}

RuntimeConfig contains configuration options used to set up the runtime

type RuntimeContainerMetadata

type RuntimeContainerMetadata struct {
	// The provided name and the ID of the image that was used to
	// instantiate the container.
	ImageName string `json:"image-name"` // Applicable to both PodSandboxes and Containers
	ImageID   string `json:"image-id"`   // Applicable to both PodSandboxes and Containers
	// The container's name, which for an infrastructure container is usually PodName + "-infra".
	ContainerName string `json:"name"`                 // Applicable to both PodSandboxes and Containers, mandatory
	CreatedAt     int64  `json:"created-at"`           // Applicable to both PodSandboxes and Containers
	MountLabel    string `json:"mountlabel,omitempty"` // Applicable to both PodSandboxes and Containers
}

RuntimeContainerMetadata is the structure that we encode as JSON and store in the metadata field of storage.Container objects. It is used for specifying attributes containers when they are being created, and allows a container's MountLabel, and possibly other values, to be modified in one read/write cycle via calls to storageService.ContainerMetadata, RuntimeContainerMetadata.SetMountLabel, and storageService.SetContainerMetadata.

func (*RuntimeContainerMetadata) SetMountLabel

func (metadata *RuntimeContainerMetadata) SetMountLabel(mountLabel string)

SetMountLabel updates the mount label held by a RuntimeContainerMetadata object.

type RuntimeOption

type RuntimeOption func(*Runtime) error

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

func WithCNIConfigDir

func WithCNIConfigDir(dir string) RuntimeOption

WithCNIConfigDir sets the CNI configuration directory

func WithCNIPluginDir

func WithCNIPluginDir(dir string) RuntimeOption

WithCNIPluginDir sets the CNI plugins directory

func WithCgroupManager

func WithCgroupManager(manager string) RuntimeOption

WithCgroupManager specifies the manager implementation name which is used to handle cgroups for containers Current valid values are "cgroupfs" and "systemd"

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 WithDefaultTransport added in v0.2.2

func WithDefaultTransport(defaultTransport string) RuntimeOption

WithDefaultTransport sets the default transport for retrieving images

func WithMaxLogSize

func WithMaxLogSize(limit int64) RuntimeOption

WithMaxLogSize sets the maximum size of container logs Positive sizes are limits in bytes, -1 is unlimited

func WithNoPivotRoot

func WithNoPivotRoot(noPivot bool) RuntimeOption

WithNoPivotRoot sets the runtime to use MS_MOVE instead of PIVOT_ROOT when starting containers

func WithOCIRuntime

func WithOCIRuntime(runtimePath string) RuntimeOption

WithOCIRuntime specifies an OCI runtime to use for running containers

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 WithStateType

func WithStateType(storeType RuntimeStateStore) RuntimeOption

WithStateType sets the backing state implementation for libpod Please note that information is not portable between backing states As such, if this differs between two libpods running on the same system, they will not share containers, and unspecified behavior may occur

func WithStaticDir

func WithStaticDir(dir string) RuntimeOption

WithStaticDir sets the directory that static runtime files which persist across reboots will be stored

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

func WithTmpDir

func WithTmpDir(dir string) RuntimeOption

WithTmpDir sets the directory that temporary runtime files which are not expected to survive across reboots will be stored This should be located on a tmpfs mount (/tmp or /var/run for example)

type RuntimeStateStore

type RuntimeStateStore int

RuntimeStateStore is a constant indicating which state store implementation should be used by libpod

type State

type State interface {
	// Close performs any pre-exit cleanup (e.g. closing database
	// connections) that may be required
	Close() error

	// Refresh clears container and pod states after a reboot
	Refresh() error

	// Return a container from the database from its full ID
	Container(id string) (*Container, error)
	// Return a container from the database by full or partial ID or full
	// name
	LookupContainer(idOrName string) (*Container, error)
	// Check if a container with the given full ID exists in the database
	HasContainer(id string) (bool, error)
	// Adds container to state
	// The container cannot be part of a pod
	// The container must have globally unique name and ID - pod names and
	// IDs also conflict with container names and IDs
	AddContainer(ctr *Container) error
	// Removes container from state
	// Containers that are part of pods must use RemoveContainerFromPod
	RemoveContainer(ctr *Container) error
	// UpdateContainer updates a container's state from the backing store
	UpdateContainer(ctr *Container) error
	// SaveContainer saves a container's current state to the backing store
	SaveContainer(ctr *Container) error
	// ContainerInUse checks if other containers depend upon a given
	// container
	// It returns a slice of the IDs of containers which depend on the given
	// container. If the slice is empty, no container depend on the given
	// container.
	// A container cannot be removed if other containers depend on it
	ContainerInUse(ctr *Container) ([]string, error)
	// Retrieves all containers presently in state
	AllContainers() ([]*Container, error)

	// Accepts full ID of pod
	Pod(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)
	// Check if a pod has a container with the given ID
	PodHasContainer(pod *Pod, ctrID string) (bool, error)
	// Get the IDs of all containers in a pod
	PodContainersByID(pod *Pod) ([]string, error)
	// Get all the containers in a pod
	PodContainers(pod *Pod) ([]*Container, error)
	// Adds pod to state
	AddPod(pod *Pod) error
	// Removes pod from state
	// Only empty pods can be removed from the state
	RemovePod(pod *Pod) error
	// Remove all containers from a pod
	// Used to simulataneously remove containers that might otherwise have
	// dependency issues
	// Will fail if a dependency outside the pod is encountered
	RemovePodContainers(pod *Pod) error
	// AddContainerToPod adds a container to an existing pod
	// The container given will be added to the state and the pod
	AddContainerToPod(pod *Pod, ctr *Container) error
	// RemoveContainerFromPod removes a container from an existing pod
	// The container will also be removed from the state
	RemoveContainerFromPod(pod *Pod, ctr *Container) error
	// Retrieves all pods presently in state
	AllPods() ([]*Pod, error)
}

State is a storage backend for libpod's current state

func NewBoltState

func NewBoltState(path, lockDir string, runtime *Runtime) (State, error)

NewBoltState creates a new bolt-backed state database

func NewInMemoryState

func NewInMemoryState() (State, error)

NewInMemoryState initializes a new, empty in-memory state

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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