Documentation ¶
Index ¶
- Constants
- Variables
- func BuildContainerEndpoint(c *Container) *networktypes.Endpoint
- func IsBridge(mode string) bool
- func IsContainer(mode string) bool
- func IsDefault(mode string) bool
- func IsHost(mode string) bool
- func IsNone(mode string) bool
- func IsPrivate(mode string) bool
- func IsUserDefined(mode string) bool
- type AttachConfig
- type Container
- func (c *Container) ExitCode() int64
- func (c *Container) FormatStatus() (string, error)
- func (c *Container) GetSpecificBasePath(path string) string
- func (c *Container) IsCreated() bool
- func (c *Container) IsDead() bool
- func (c *Container) IsExited() bool
- func (c *Container) IsPaused() bool
- func (c *Container) IsRemoving() bool
- func (c *Container) IsRestarting() bool
- func (c *Container) IsRunning() bool
- func (c *Container) IsRunningOrPaused() bool
- func (c *Container) IsStopped() bool
- func (c *Container) Key() string
- func (c *Container) SetSnapshotterMeta(mounts []mount.Mount)
- func (c *Container) SetStatusExited(exitCode int64, errMsg string)
- func (c *Container) SetStatusPaused()
- func (c *Container) SetStatusRunning(pid int64)
- func (c *Container) SetStatusStopped(exitCode int64, errMsg string)
- func (c *Container) SetStatusUnpaused()
- func (c *Container) StopTimeout() int64
- func (c *Container) UnsetMergedDir()
- func (c *Container) Write(store *meta.Store) error
- type ContainerEvent
- type ContainerExecConfig
- type ContainerFilter
- type ContainerListOption
- type ContainerManager
- func (mgr *ContainerManager) Attach(ctx context.Context, name string, attach *AttachConfig) error
- func (mgr *ContainerManager) CheckExecExist(ctx context.Context, name string) error
- func (mgr *ContainerManager) Connect(ctx context.Context, name string, networkIDOrName string, ...) error
- func (mgr *ContainerManager) Create(ctx context.Context, name string, config *types.ContainerCreateConfig) (resp *types.ContainerCreateResp, err error)
- func (mgr *ContainerManager) CreateCheckpoint(ctx context.Context, name string, options *types.CheckpointCreateOptions) (err0 error)
- func (mgr *ContainerManager) CreateExec(ctx context.Context, name string, config *types.ExecCreateConfig) (string, error)
- func (mgr *ContainerManager) DeleteCheckpoint(ctx context.Context, name string, options *types.CheckpointDeleteOptions) error
- func (mgr *ContainerManager) Disconnect(ctx context.Context, containerName, networkName string, force bool) error
- func (mgr *ContainerManager) Get(ctx context.Context, name string) (*Container, error)
- func (mgr *ContainerManager) GetExecConfig(ctx context.Context, execid string) (*ContainerExecConfig, error)
- func (mgr *ContainerManager) InspectExec(ctx context.Context, execid string) (*types.ContainerExecInspect, error)
- func (mgr *ContainerManager) List(ctx context.Context, option *ContainerListOption) ([]*Container, error)
- func (mgr *ContainerManager) ListCheckpoint(ctx context.Context, name string, options *types.CheckpointListOptions) ([]string, error)
- func (mgr *ContainerManager) LogContainerEvent(ctx context.Context, container *Container, action string)
- func (mgr *ContainerManager) LogContainerEventWithAttributes(ctx context.Context, container *Container, action string, ...)
- func (mgr *ContainerManager) LogNetworkEventWithAttributes(ctx context.Context, nw libnetwork.Network, action string, ...)
- func (mgr *ContainerManager) Logs(ctx context.Context, name string, logOpt *types.ContainerLogsOptions) (<-chan *logger.LogMessage, bool, error)
- func (mgr *ContainerManager) Mount(ctx context.Context, c *Container) error
- func (mgr *ContainerManager) NewSnapshotsSyncer(snapshotStore *SnapshotStore, duration time.Duration) *SnapshotsSyncer
- func (mgr *ContainerManager) Pause(ctx context.Context, name string) error
- func (mgr *ContainerManager) Remove(ctx context.Context, name string, options *types.ContainerRemoveOptions) error
- func (mgr *ContainerManager) Rename(ctx context.Context, oldName, newName string) error
- func (mgr *ContainerManager) Resize(ctx context.Context, name string, opts types.ResizeOptions) error
- func (mgr *ContainerManager) ResizeExec(ctx context.Context, execid string, opts types.ResizeOptions) error
- func (mgr *ContainerManager) Restart(ctx context.Context, name string, timeout int64) error
- func (mgr *ContainerManager) Restore(ctx context.Context) error
- func (mgr *ContainerManager) SetupWorkingDirectory(ctx context.Context, c *Container) error
- func (mgr *ContainerManager) Start(ctx context.Context, id string, options *types.ContainerStartOptions) (err error)
- func (mgr *ContainerManager) StartExec(ctx context.Context, execid string, attach *AttachConfig) (err error)
- func (mgr *ContainerManager) Stats(ctx context.Context, name string) (*containerdtypes.Metric, *cgroups.Metrics, error)
- func (mgr *ContainerManager) Stop(ctx context.Context, name string, timeout int64) error
- func (mgr *ContainerManager) StreamStats(ctx context.Context, name string, config *ContainerStatsConfig) error
- func (mgr *ContainerManager) Top(ctx context.Context, name string, psArgs string) (*types.ContainerProcessList, error)
- func (mgr *ContainerManager) Unmount(ctx context.Context, c *Container) error
- func (mgr *ContainerManager) Unpause(ctx context.Context, name string) error
- func (mgr *ContainerManager) Update(ctx context.Context, name string, config *types.UpdateConfig) error
- func (mgr *ContainerManager) Upgrade(ctx context.Context, name string, config *types.ContainerUpgradeConfig) error
- func (mgr *ContainerManager) Wait(ctx context.Context, name string) (types.ContainerWaitOKBody, error)
- type ContainerMgr
- type ContainerMonitor
- type ContainerRestartPolicy
- type ContainerStatsConfig
- type ImageManager
- func (mgr *ImageManager) AddTag(ctx context.Context, sourceImage string, targetTag string) error
- func (mgr *ImageManager) CheckReference(ctx context.Context, idOrRef string) (actualID digest.Digest, actualRef reference.Named, primaryRef reference.Named, ...)
- func (mgr *ImageManager) GetImage(ctx context.Context, idOrRef string) (*types.ImageInfo, error)
- func (mgr *ImageManager) ImageHistory(ctx context.Context, idOrRef string) ([]types.HistoryResultItem, error)
- func (mgr *ImageManager) ListImages(ctx context.Context, filter ...string) ([]types.ImageInfo, error)
- func (mgr *ImageManager) ListReferences(ctx context.Context, imageID digest.Digest) ([]reference.Named, error)
- func (mgr *ImageManager) LoadImage(ctx context.Context, imageName string, tarstream io.ReadCloser) error
- func (mgr *ImageManager) LogImageEvent(ctx context.Context, imageID, refName, action string)
- func (mgr *ImageManager) LogImageEventWithAttributes(ctx context.Context, imageID, refName, action string, ...)
- func (mgr *ImageManager) PullImage(ctx context.Context, ref string, authConfig *types.AuthConfig, out io.Writer) error
- func (mgr *ImageManager) RemoveImage(ctx context.Context, idOrRef string, force bool) error
- func (mgr *ImageManager) SaveImage(ctx context.Context, idOrRef string) (io.ReadCloser, error)
- func (mgr *ImageManager) SearchImages(ctx context.Context, name string, registry string) ([]types.SearchResultItem, error)
- type ImageMgr
- type ImageRemoveOption
- type NetworkManager
- func (nm *NetworkManager) Controller() libnetwork.NetworkController
- func (nm *NetworkManager) Create(ctx context.Context, create apitypes.NetworkCreateConfig) (*types.Network, error)
- func (nm *NetworkManager) EndpointCreate(ctx context.Context, endpoint *types.Endpoint) (string, error)
- func (nm *NetworkManager) EndpointInfo(ctx context.Context, name string) (*types.Endpoint, error)
- func (nm *NetworkManager) EndpointList(ctx context.Context) ([]*types.Endpoint, error)
- func (nm *NetworkManager) EndpointRemove(ctx context.Context, endpoint *types.Endpoint) error
- func (nm *NetworkManager) Get(ctx context.Context, idName string) (*types.Network, error)
- func (nm *NetworkManager) GetNetworkByName(name string) (*types.Network, error)
- func (nm *NetworkManager) GetNetworkByPartialID(partialID string) (*types.Network, error)
- func (nm *NetworkManager) GetNetworksByPartialID(partialID string) []*types.Network
- func (nm *NetworkManager) List(ctx context.Context, labels map[string]string) ([]*types.Network, error)
- func (nm *NetworkManager) LogNetworkEvent(ctx context.Context, nw libnetwork.Network, action string)
- func (nm *NetworkManager) Remove(ctx context.Context, name string) error
- type NetworkMgr
- type Snapshot
- type SnapshotStore
- type SnapshotsSyncer
- type SpecWrapper
- type SystemManager
- func (mgr *SystemManager) Auth(auth *types.AuthConfig) (string, error)
- func (mgr *SystemManager) Info() (types.SystemInfo, error)
- func (mgr *SystemManager) SubscribeToEvents(ctx context.Context, since, until time.Time, filter filters.Args) ([]types.EventsMessage, <-chan *types.EventsMessage, <-chan error)
- func (mgr *SystemManager) UpdateDaemon(cfg *types.DaemonUpdateConfig) error
- func (mgr *SystemManager) Version() (types.SystemVersion, error)
- type SystemMgr
- type VolumeManager
- func (vm *VolumeManager) Attach(ctx context.Context, name string, options map[string]string) (*types.Volume, error)
- func (vm *VolumeManager) Create(ctx context.Context, name, driver string, options, labels map[string]string) (*types.Volume, error)
- func (vm *VolumeManager) Detach(ctx context.Context, name string, options map[string]string) (*types.Volume, error)
- func (vm *VolumeManager) Get(ctx context.Context, name string) (*types.Volume, error)
- func (vm *VolumeManager) List(ctx context.Context, labels map[string]string) ([]*types.Volume, error)
- func (vm *VolumeManager) LogVolumeEvent(ctx context.Context, volumeID, action string, attributes map[string]string)
- func (vm *VolumeManager) Path(ctx context.Context, name string) (string, error)
- func (vm *VolumeManager) Remove(ctx context.Context, name string) error
- type VolumeMgr
Constants ¶
const ( // DefaultStopTimeout is the timeout (in seconds) for the syscall signal used to stop a container. DefaultStopTimeout = 10 // RuntimeDir is specified name keeps runtime path script. RuntimeDir = "runtimes" )
const ( // ProfileNamePrefix is the prefix for loading profiles on a localhost. Eg. localhost/profileName. ProfileNamePrefix = "localhost/" // ProfileRuntimeDefault indicates that we should use or create a runtime default profile. ProfileRuntimeDefault = "runtime/default" // ProfileDockerDefault indicates that we should use or create a docker default profile. ProfileDockerDefault = "docker/default" // ProfilePouchDefault indicates that we should use or create a pouch default profile. ProfilePouchDefault = "pouch/default" // ProfileNameUnconfined is a string indicating one should run a pod/containerd without a security profile. ProfileNameUnconfined = "unconfined" )
FIXME: these variables have no relation with spec, move them.
const ( // EvExit represents container's exit event. EvExit = iota )
Variables ¶
var ( // GCExecProcessTick is the time interval to trigger gc unused exec config, // time unit is minute. GCExecProcessTick = 5 // MinMemory is minimal memory container should has. MinMemory int64 = 4194304 // DefaultStatsInterval is the interval configured for stats. DefaultStatsInterval = time.Duration(time.Second) )
var ( // MemoryWarn is warning for flag --memory MemoryWarn = "Current Kernel does not support memory limit, discard --memory" // MemorySwapWarn is warning for flag --memory-swap MemorySwapWarn = "Current Kernel does not support memory swap, discard --memory-swap" // MemorySwappinessWarn is warning for flag --memory-swappiness MemorySwappinessWarn = "Current Kernel does not support memory swappiness , discard --memory-swappiness" //OOMKillWarn is warning for flag --oom-kill-disable OOMKillWarn = "Current Kernel does not support disable oom kill, discard --oom-kill-disable" // CpusetCpusWarn is warning for flag --cpuset-cpus CpusetCpusWarn = "Current Kernel does not support cpuset cpus, discard --cpuset-cpus" // CpusetMemsWarn is warning for flag --cpuset-mems CpusetMemsWarn = "Current Kernel does not support cpuset mems, discard --cpuset-mems" CPUSharesWarn = "Current Kernel does not support cpu shares, discard --cpu-shares" // CPUQuotaWarn is warning for flag --cpu-quota CPUQuotaWarn = "Current Kernel does not support cpu quota, discard --cpu-quota" // CPUPeriodWarn is warning for flag --cpu-period CPUPeriodWarn = "Current Kernel does not support cpu period, discard --cpu-period" // BlkioWeightWarn is warning for flag --blkio-weight BlkioWeightWarn = "Current Kernel does not support blkio weight, discard --blkio-weight" // BlkioWeightDeviceWarn is warning for flag --blkio-weight-device BlkioWeightDeviceWarn = "Current Kernel does not support blkio weight device, discard --blkio-weight-device" // BlkioDeviceReadBpsWarn is warning for flag --device-read-bps BlkioDeviceReadBpsWarn = "Current Kernel does not support blkio device throttle read bps, discard --device-read-bps" // BlkioDeviceWriteBpsWarn is warning for flag --device-write-bps BlkioDeviceWriteBpsWarn = "Current Kernel does not support blkio device throttle write bps, discard --device-write-bps" // BlkioDeviceReadIOpsWarn is warning for flag --device-read-iops BlkioDeviceReadIOpsWarn = "Current Kernel does not support blkio device throttle read iops, discard --device-read-iops" // BlkioDeviceWriteIOpsWarn is warning for flag --device-write-iops BlkioDeviceWriteIOpsWarn = "Current Kernel does not support blkio device throttle, discard --device-write-iops" // PidsLimitWarn is warning for flag --pids-limit PidsLimitWarn = "Current Kernel does not support pids cgroup, discard --pids-limit" )
Functions ¶
func BuildContainerEndpoint ¶
func BuildContainerEndpoint(c *Container) *networktypes.Endpoint
BuildContainerEndpoint is used to build container's endpoint config.
func IsContainer ¶
IsContainer is used to check if network mode is container mode.
func IsUserDefined ¶
IsUserDefined is used to check if network mode is bridge mode.
Types ¶
type AttachConfig ¶
type AttachConfig struct { Stdin bool Stdout bool Stderr bool // For IO backend like http, we need to mux stdout & stderr // if terminal is disabled. // But for other IO backend, it is not necessary. // So we should make it configurable. MuxDisabled bool // Attach using http. Hijack http.Hijacker Upgrade bool // Attach using pipe. Pipe *io.PipeWriter // Attach using streams. Streams *remotecommand.Streams // Attach to the container to get its log. CriLogFile *os.File }
AttachConfig wraps some infos of attaching.
type Container ¶
type Container struct { sync.Mutex // app armor profile AppArmorProfile string `json:"AppArmorProfile,omitempty"` // seccomp profile SeccompProfile string `json:"SeccompProfile,omitempty"` // no new privileges NoNewPrivileges bool `json:"NoNewPrivileges,omitempty"` // The arguments to the command being run Args []string `json:"Args"` // config Config *types.ContainerConfig `json:"Config,omitempty"` // The time the container was created Created string `json:"Created,omitempty"` // driver Driver string `json:"Driver,omitempty"` // exec ids ExecIds string `json:"ExecIDs,omitempty"` // Snapshotter, GraphDriver is same, keep both // just for compatibility // snapshotter informations of container Snapshotter *types.SnapshotterData `json:"Snapshotter,omitempty"` // graph driver GraphDriver *types.GraphDriverData `json:"GraphDriver,omitempty"` // host config HostConfig *types.HostConfig `json:"HostConfig,omitempty"` // hostname path HostnamePath string `json:"HostnamePath,omitempty"` // hosts path HostsPath string `json:"HostsPath,omitempty"` // The ID of the container ID string `json:"Id,omitempty"` // The container's image Image string `json:"Image,omitempty"` // log path LogPath string `json:"LogPath,omitempty"` // mount label MountLabel string `json:"MountLabel,omitempty"` // mounts Mounts []*types.MountPoint `json:"Mounts"` // name Name string `json:"Name,omitempty"` // network settings NetworkSettings *types.NetworkSettings `json:"NetworkSettings,omitempty"` Node interface{} `json:"Node,omitempty"` // The path to the command being run Path string `json:"Path,omitempty"` // process label ProcessLabel string `json:"ProcessLabel,omitempty"` // resolv conf path ResolvConfPath string `json:"ResolvConfPath,omitempty"` // restart count RestartCount int64 `json:"RestartCount,omitempty"` // The total size of all the files in this container. SizeRootFs int64 `json:"SizeRootFs,omitempty"` // The size of files that have been created or changed by this container. SizeRw int64 `json:"SizeRw,omitempty"` // state State *types.ContainerState `json:"State,omitempty"` // BaseFS BaseFS string `json:"BaseFS, omitempty"` // Escape keys for detach DetachKeys string // RootFSProvided is a flag to point the container is created by specify rootfs RootFSProvided bool // MountFS is used to mark the directory of mount overlayfs for pouch daemon to operate the image. MountFS string `json:"-"` }
Container represents the container's meta data.
func (*Container) FormatStatus ¶
FormatStatus format container status
func (*Container) GetSpecificBasePath ¶
GetSpecificBasePath accepts a given path, look for whether the path is exist within container, if has, returns container base path like BaseFS, if not, return empty string
func (*Container) IsRemoving ¶
IsRemoving returns container is removing or not.
func (*Container) IsRestarting ¶
IsRestarting returns container is restarting or not.
func (*Container) IsRunningOrPaused ¶
IsRunningOrPaused returns true of container is running or paused.
func (*Container) SetSnapshotterMeta ¶
SetSnapshotterMeta sets snapshotter for container
func (*Container) SetStatusExited ¶
SetStatusExited sets a container to be status exited.
func (*Container) SetStatusPaused ¶
func (c *Container) SetStatusPaused()
SetStatusPaused sets a container to be status paused.
func (*Container) SetStatusRunning ¶
SetStatusRunning sets a container to be status running. When a container's status turns to StatusStopped, the following fields need updated: Status -> StatusRunning StartAt -> time.Now() Pid -> input param ExitCode -> 0
func (*Container) SetStatusStopped ¶
SetStatusStopped sets a container to be status stopped. When a container's status turns to StatusStopped, the following fields need updated: Status -> StatusStopped FinishedAt -> time.Now() Pid -> -1 ExitCode -> input param Error -> input param
func (*Container) SetStatusUnpaused ¶
func (c *Container) SetStatusUnpaused()
SetStatusUnpaused sets a container to be status running. Unpaused is treated running.
func (*Container) StopTimeout ¶
StopTimeout returns the timeout (in seconds) used to stop the container.
func (*Container) UnsetMergedDir ¶
func (c *Container) UnsetMergedDir()
UnsetMergedDir unsets Snapshot MergedDir. Stop a container will delete the containerd container, the merged dir will also be deleted, so we should unset the container's MergedDir.
type ContainerEvent ¶
type ContainerEvent struct { Kind int // contains filtered or unexported fields }
ContainerEvent represents the container's events.
func ContainerExitEvent ¶
func ContainerExitEvent(c *Container) *ContainerEvent
ContainerExitEvent represents container's exit event.
func (*ContainerEvent) String ¶
func (e *ContainerEvent) String() string
String returns container's event type as a string.
func (*ContainerEvent) WithHandle ¶
func (e *ContainerEvent) WithHandle(handle func(*Container) error) *ContainerEvent
WithHandle sets the event's handler.
type ContainerExecConfig ¶
type ContainerExecConfig struct { // ExecID identifies the ID of this exec ExecID string // contains the config of this exec types.ExecCreateConfig // Save the container's id into exec config. ContainerID string // ExitCode records the exit code of a exec process. ExitCode int64 // Running represents whether the exec process is running inside container. Running bool // Error represents the exec process response error. Error error // WaitForClean means exec process can be removed. WaitForClean bool }
ContainerExecConfig is the config a process exec.
type ContainerFilter ¶
ContainerFilter defines a function to filter container in the store.
type ContainerListOption ¶
type ContainerListOption struct { All bool Filter map[string][]string FilterFunc ContainerFilter }
ContainerListOption wraps the container list interface params.
type ContainerManager ¶
type ContainerManager struct { // Store stores containers in Backend store. // Element operated in store must has a type of *Container. // By default, Store will use local filesystem with json format to store containers. Store *meta.Store // Client is used to interact with containerd. Client ctrd.APIClient // NameToID stores relations between container's name and ID. // It is used to get container ID via container name. NameToID *collect.SafeMap ImageMgr ImageMgr VolumeMgr VolumeMgr NetworkMgr NetworkMgr IOs *containerio.Cache ExecProcesses *collect.SafeMap Config *config.Config // contains filtered or unexported fields }
ContainerManager is the default implement of interface ContainerMgr.
func NewContainerManager ¶
func NewContainerManager(ctx context.Context, store *meta.Store, cli ctrd.APIClient, imgMgr ImageMgr, volMgr VolumeMgr, cfg *config.Config, contPlugin plugins.ContainerPlugin, eventsService *events.Events) (*ContainerManager, error)
NewContainerManager creates a brand new container manager.
func (*ContainerManager) Attach ¶
func (mgr *ContainerManager) Attach(ctx context.Context, name string, attach *AttachConfig) error
Attach attachs a container's io.
func (*ContainerManager) CheckExecExist ¶
func (mgr *ContainerManager) CheckExecExist(ctx context.Context, name string) error
CheckExecExist check if exec process `name` exist
func (*ContainerManager) Connect ¶
func (mgr *ContainerManager) Connect(ctx context.Context, name string, networkIDOrName string, epConfig *types.EndpointSettings) error
Connect is used to connect a container to a network.
func (*ContainerManager) Create ¶
func (mgr *ContainerManager) Create(ctx context.Context, name string, config *types.ContainerCreateConfig) (resp *types.ContainerCreateResp, err error)
Create checks passed in parameters and create a Container object whose status is set at Created.
func (*ContainerManager) CreateCheckpoint ¶
func (mgr *ContainerManager) CreateCheckpoint(ctx context.Context, name string, options *types.CheckpointCreateOptions) (err0 error)
CreateCheckpoint creates a checkpoint from a running container
func (*ContainerManager) CreateExec ¶
func (mgr *ContainerManager) CreateExec(ctx context.Context, name string, config *types.ExecCreateConfig) (string, error)
CreateExec creates exec process's meta data.
func (*ContainerManager) DeleteCheckpoint ¶
func (mgr *ContainerManager) DeleteCheckpoint(ctx context.Context, name string, options *types.CheckpointDeleteOptions) error
DeleteCheckpoint deletes a checkpoint from a container
func (*ContainerManager) Disconnect ¶
func (mgr *ContainerManager) Disconnect(ctx context.Context, containerName, networkName string, force bool) error
Disconnect disconnects the given container from given network
func (*ContainerManager) GetExecConfig ¶
func (mgr *ContainerManager) GetExecConfig(ctx context.Context, execid string) (*ContainerExecConfig, error)
GetExecConfig returns execonfig of a exec process inside container.
func (*ContainerManager) InspectExec ¶
func (mgr *ContainerManager) InspectExec(ctx context.Context, execid string) (*types.ContainerExecInspect, error)
InspectExec returns low-level information about exec command.
func (*ContainerManager) List ¶
func (mgr *ContainerManager) List(ctx context.Context, option *ContainerListOption) ([]*Container, error)
List returns the container's list.
func (*ContainerManager) ListCheckpoint ¶
func (mgr *ContainerManager) ListCheckpoint(ctx context.Context, name string, options *types.CheckpointListOptions) ([]string, error)
ListCheckpoint lists checkpoints from a container
func (*ContainerManager) LogContainerEvent ¶
func (mgr *ContainerManager) LogContainerEvent(ctx context.Context, container *Container, action string)
LogContainerEvent generates an event related to a container with only the default attributes.
func (*ContainerManager) LogContainerEventWithAttributes ¶
func (mgr *ContainerManager) LogContainerEventWithAttributes(ctx context.Context, container *Container, action string, attributes map[string]string)
LogContainerEventWithAttributes generates an event related to a container with specific given attributes.
func (*ContainerManager) LogNetworkEventWithAttributes ¶
func (mgr *ContainerManager) LogNetworkEventWithAttributes(ctx context.Context, nw libnetwork.Network, action string, attributes map[string]string)
LogNetworkEventWithAttributes generates an event related to a network with specific given attributes Use ContainerManager to publish network event may be a little bit ugly now
func (*ContainerManager) Logs ¶
func (mgr *ContainerManager) Logs(ctx context.Context, name string, logOpt *types.ContainerLogsOptions) (<-chan *logger.LogMessage, bool, error)
Logs is used to return log created by the container.
func (*ContainerManager) Mount ¶
func (mgr *ContainerManager) Mount(ctx context.Context, c *Container) error
Mount sets the container rootfs
func (*ContainerManager) NewSnapshotsSyncer ¶
func (mgr *ContainerManager) NewSnapshotsSyncer(snapshotStore *SnapshotStore, duration time.Duration) *SnapshotsSyncer
NewSnapshotsSyncer creates a snapshot syncer.
func (*ContainerManager) Pause ¶
func (mgr *ContainerManager) Pause(ctx context.Context, name string) error
Pause pauses a running container.
func (*ContainerManager) Remove ¶
func (mgr *ContainerManager) Remove(ctx context.Context, name string, options *types.ContainerRemoveOptions) error
Remove removes a container, it may be running or stopped and so on.
func (*ContainerManager) Rename ¶
func (mgr *ContainerManager) Rename(ctx context.Context, oldName, newName string) error
Rename renames a container.
func (*ContainerManager) Resize ¶
func (mgr *ContainerManager) Resize(ctx context.Context, name string, opts types.ResizeOptions) error
Resize resizes the size of a container tty.
func (*ContainerManager) ResizeExec ¶
func (mgr *ContainerManager) ResizeExec(ctx context.Context, execid string, opts types.ResizeOptions) error
ResizeExec resizes the size of exec process's tty.
func (*ContainerManager) Restore ¶
func (mgr *ContainerManager) Restore(ctx context.Context) error
Restore containers from meta store to memory and recover those container.
func (*ContainerManager) SetupWorkingDirectory ¶
func (mgr *ContainerManager) SetupWorkingDirectory(ctx context.Context, c *Container) error
SetupWorkingDirectory setup working directory for container
func (*ContainerManager) Start ¶
func (mgr *ContainerManager) Start(ctx context.Context, id string, options *types.ContainerStartOptions) (err error)
Start a pre created Container.
func (*ContainerManager) StartExec ¶
func (mgr *ContainerManager) StartExec(ctx context.Context, execid string, attach *AttachConfig) (err error)
StartExec executes a new process in container.
func (*ContainerManager) Stats ¶
func (mgr *ContainerManager) Stats(ctx context.Context, name string) (*containerdtypes.Metric, *cgroups.Metrics, error)
Stats gets the stat of a container.
func (*ContainerManager) StreamStats ¶
func (mgr *ContainerManager) StreamStats(ctx context.Context, name string, config *ContainerStatsConfig) error
StreamStats gets the stats from containerd side and send back to caller as a stream.
func (*ContainerManager) Top ¶
func (mgr *ContainerManager) Top(ctx context.Context, name string, psArgs string) (*types.ContainerProcessList, error)
Top lists the processes running inside of the given container
func (*ContainerManager) Unmount ¶
func (mgr *ContainerManager) Unmount(ctx context.Context, c *Container) error
Unmount unsets the container rootfs
func (*ContainerManager) Unpause ¶
func (mgr *ContainerManager) Unpause(ctx context.Context, name string) error
Unpause unpauses a paused container.
func (*ContainerManager) Update ¶
func (mgr *ContainerManager) Update(ctx context.Context, name string, config *types.UpdateConfig) error
Update updates the configurations of a container.
func (*ContainerManager) Upgrade ¶
func (mgr *ContainerManager) Upgrade(ctx context.Context, name string, config *types.ContainerUpgradeConfig) error
Upgrade upgrades a container with new image and args.
func (*ContainerManager) Wait ¶
func (mgr *ContainerManager) Wait(ctx context.Context, name string) (types.ContainerWaitOKBody, error)
Wait stops processing until the given container is stopped.
type ContainerMgr ¶
type ContainerMgr interface { // Restore containers from meta store to memory and recover those container. Restore(ctx context.Context) error // Create a new container. Create(ctx context.Context, name string, config *types.ContainerCreateConfig) (*types.ContainerCreateResp, error) // Get the detailed information of container. Get(ctx context.Context, name string) (*Container, error) // List returns the list of containers. List(ctx context.Context, option *ContainerListOption) ([]*Container, error) // Start a container. Start(ctx context.Context, id string, options *types.ContainerStartOptions) error // Stop a container. Stop(ctx context.Context, name string, timeout int64) error // Restart restart a running container. Restart(ctx context.Context, name string, timeout int64) error // Pause a container. Pause(ctx context.Context, name string) error // Unpause a container. Unpause(ctx context.Context, name string) error // Using a stream to get stats of a container. StreamStats(ctx context.Context, name string, config *ContainerStatsConfig) error // Stats of a container. Stats(ctx context.Context, name string) (*containerdtypes.Metric, *cgroups.Metrics, error) // Attach a container. Attach(ctx context.Context, name string, attach *AttachConfig) error // Rename renames a container. Rename(ctx context.Context, oldName string, newName string) error // Update updates the configurations of a container. Update(ctx context.Context, name string, config *types.UpdateConfig) error // Upgrade upgrades a container with new image and args. Upgrade(ctx context.Context, name string, config *types.ContainerUpgradeConfig) error // Top lists the processes running inside of the given container Top(ctx context.Context, name string, psArgs string) (*types.ContainerProcessList, error) // Resize resizes the size of container tty. Resize(ctx context.Context, name string, opts types.ResizeOptions) error // Remove removes a container, it may be running or stopped and so on. Remove(ctx context.Context, name string, option *types.ContainerRemoveOptions) error // Wait stops processing until the given container is stopped. Wait(ctx context.Context, name string) (types.ContainerWaitOKBody, error) // CreateExec creates exec process's environment. CreateExec(ctx context.Context, name string, config *types.ExecCreateConfig) (string, error) // StartExec executes a new process in container. StartExec(ctx context.Context, execid string, attach *AttachConfig) error // InspectExec returns low-level information about exec command. InspectExec(ctx context.Context, execid string) (*types.ContainerExecInspect, error) // GetExecConfig returns execonfig of a exec process inside container. GetExecConfig(ctx context.Context, execid string) (*ContainerExecConfig, error) // CheckExecExist check if exec process `name` exist CheckExecExist(ctx context.Context, name string) error // ResizeExec resizes the size of exec process's tty. ResizeExec(ctx context.Context, execid string, opts types.ResizeOptions) error // Connect is used to connect a container to a network. Connect(ctx context.Context, name string, networkIDOrName string, epConfig *types.EndpointSettings) error // Disconnect disconnects the given container from // given network Disconnect(ctx context.Context, containerName, networkName string, force bool) error // Logs is used to return log created by the container. Logs(ctx context.Context, name string, logsOpt *types.ContainerLogsOptions) (<-chan *logger.LogMessage, bool, error) // NewSnapshotsSyncer creates a snapshot syncer. NewSnapshotsSyncer(snapshotStore *SnapshotStore, duration time.Duration) *SnapshotsSyncer // CreateCheckpoint creates a checkpoint from a running container CreateCheckpoint(ctx context.Context, name string, options *types.CheckpointCreateOptions) error // ListCheckpoint lists checkpoints from a container ListCheckpoint(ctx context.Context, name string, options *types.CheckpointListOptions) ([]string, error) // DeleteCheckpoint deletes a checkpoint from a container DeleteCheckpoint(ctx context.Context, name string, options *types.CheckpointDeleteOptions) error }
ContainerMgr as an interface defines all operations against container. ContainerMgr's functionality could be divided into three parts: 1. regular container management; 2. container exec management; 3. container network management.
type ContainerMonitor ¶
type ContainerMonitor struct {
// contains filtered or unexported fields
}
ContainerMonitor is used to monitor contianer's event.
func NewContainerMonitor ¶
func NewContainerMonitor() *ContainerMonitor
NewContainerMonitor returns one ContainerMonitor object.
func (*ContainerMonitor) PostEvent ¶
func (m *ContainerMonitor) PostEvent(ev *ContainerEvent)
PostEvent sends a event to monitor.
type ContainerRestartPolicy ¶
type ContainerRestartPolicy types.RestartPolicy
ContainerRestartPolicy represents the policy is used to manage container.
func (ContainerRestartPolicy) IsAlways ¶
func (p ContainerRestartPolicy) IsAlways() bool
IsAlways returns the container need to be restarted or not.
func (ContainerRestartPolicy) IsNone ¶
func (p ContainerRestartPolicy) IsNone() bool
IsNone returns the container don't need to be restarted or not.
type ContainerStatsConfig ¶
ContainerStatsConfig contains all configs on stats interface. This struct is only used in daemon side.
type ImageManager ¶
type ImageManager struct { // DefaultRegistry is the default registry of daemon. // When users do not specify image repo in image name, // daemon will automatically pull images with DefaultRegistry and DefaultNamespace. DefaultRegistry string // DefaultNamespace is the default namespace used in DefaultRegistry. DefaultNamespace string // contains filtered or unexported fields }
ImageManager is an implementation of interface ImageMgr.
func NewImageManager ¶
func NewImageManager(cfg *config.Config, client ctrd.APIClient, eventsService *events.Events) (*ImageManager, error)
NewImageManager initializes a brand new image manager.
func (*ImageManager) AddTag ¶
AddTag adds the tag reference to the source image.
NOTE(fuwei): AddTag hacks the containerd metadata boltdb, which we add the reference into the containerd metadata boltdb with the existing image content. It means that the "tag" is primary reference in the pouchd.
For example,
pouch tag A B pouch rmi A
The B is still there.
func (*ImageManager) CheckReference ¶
func (mgr *ImageManager) CheckReference(ctx context.Context, idOrRef string) (actualID digest.Digest, actualRef reference.Named, primaryRef reference.Named, err error)
CheckReference returns image ID and actual reference.
func (*ImageManager) ImageHistory ¶
func (mgr *ImageManager) ImageHistory(ctx context.Context, idOrRef string) ([]types.HistoryResultItem, error)
ImageHistory returns image history by reference.
func (*ImageManager) ListImages ¶
func (mgr *ImageManager) ListImages(ctx context.Context, filter ...string) ([]types.ImageInfo, error)
ListImages lists images stored by containerd.
func (*ImageManager) ListReferences ¶
func (mgr *ImageManager) ListReferences(ctx context.Context, imageID digest.Digest) ([]reference.Named, error)
ListReferences returns all references
func (*ImageManager) LoadImage ¶
func (mgr *ImageManager) LoadImage(ctx context.Context, imageName string, tarstream io.ReadCloser) error
LoadImage loads images by the oci.v1 format tarstream.
func (*ImageManager) LogImageEvent ¶
func (mgr *ImageManager) LogImageEvent(ctx context.Context, imageID, refName, action string)
LogImageEvent generates an event related to an image with only the default attributes
func (*ImageManager) LogImageEventWithAttributes ¶
func (mgr *ImageManager) LogImageEventWithAttributes(ctx context.Context, imageID, refName, action string, attributes map[string]string)
LogImageEventWithAttributes generates an event related to an image with specific given attributes
func (*ImageManager) PullImage ¶
func (mgr *ImageManager) PullImage(ctx context.Context, ref string, authConfig *types.AuthConfig, out io.Writer) error
PullImage pulls images from specified registry.
func (*ImageManager) RemoveImage ¶
RemoveImage deletes a reference.
NOTE: if the reference is short ID or ID, should remove all the references.
func (*ImageManager) SaveImage ¶
func (mgr *ImageManager) SaveImage(ctx context.Context, idOrRef string) (io.ReadCloser, error)
SaveImage saves image to the oci.v1 format tarstream.
func (*ImageManager) SearchImages ¶
func (mgr *ImageManager) SearchImages(ctx context.Context, name string, registry string) ([]types.SearchResultItem, error)
SearchImages searches imaged from specified registry.
type ImageMgr ¶
type ImageMgr interface { // PullImage pulls images from specified registry. PullImage(ctx context.Context, ref string, authConfig *types.AuthConfig, out io.Writer) error // GetImage returns imageInfo by reference or id. GetImage(ctx context.Context, idOrRef string) (*types.ImageInfo, error) // ListImages lists images stored by containerd. ListImages(ctx context.Context, filter ...string) ([]types.ImageInfo, error) // Search Images from specified registry. SearchImages(ctx context.Context, name string, registry string) ([]types.SearchResultItem, error) // RemoveImage deletes an image by reference. RemoveImage(ctx context.Context, idOrRef string, force bool) error // AddTag creates target ref for source image. AddTag(ctx context.Context, sourceImage string, targetRef string) error // CheckReference returns imageID, actual reference and primary reference. CheckReference(ctx context.Context, idOrRef string) (digest.Digest, reference.Named, reference.Named, error) // ListReferences returns all references ListReferences(ctx context.Context, imageID digest.Digest) ([]reference.Named, error) // LoadImage creates a set of images by tarstream. LoadImage(ctx context.Context, imageName string, tarstream io.ReadCloser) error // SaveImage saves image to tarstream. SaveImage(ctx context.Context, idOrRef string) (io.ReadCloser, error) // ImageHistory returns image history by reference. ImageHistory(ctx context.Context, idOrRef string) ([]types.HistoryResultItem, error) }
ImageMgr as an interface defines all operations against images.
type ImageRemoveOption ¶
type ImageRemoveOption struct {
Force bool
}
ImageRemoveOption wraps the image remove interface params.
type NetworkManager ¶
type NetworkManager struct {
// contains filtered or unexported fields
}
NetworkManager is the default implement of interface NetworkMgr.
func NewNetworkManager ¶
func NewNetworkManager(cfg *config.Config, store *meta.Store, ctrMgr ContainerMgr, eventsService *events.Events) (*NetworkManager, error)
NewNetworkManager creates a brand new network manager.
func (*NetworkManager) Controller ¶
func (nm *NetworkManager) Controller() libnetwork.NetworkController
Controller returns the network controller.
func (*NetworkManager) Create ¶
func (nm *NetworkManager) Create(ctx context.Context, create apitypes.NetworkCreateConfig) (*types.Network, error)
Create is used to create network.
func (*NetworkManager) EndpointCreate ¶
func (nm *NetworkManager) EndpointCreate(ctx context.Context, endpoint *types.Endpoint) (string, error)
EndpointCreate is used to create network endpoint.
func (*NetworkManager) EndpointInfo ¶
EndpointInfo returns the information of endpoint that specified name/id.
func (*NetworkManager) EndpointList ¶
EndpointList returns all endpoints.
func (*NetworkManager) EndpointRemove ¶
EndpointRemove is used to remove network endpoint.
func (*NetworkManager) Get ¶
Get returns the information of network for specified string that represent network name or ID. If network name is given, the network with same name is returned. If prefix of network ID is given, the network with same prefix is returned.
func (*NetworkManager) GetNetworkByName ¶
func (nm *NetworkManager) GetNetworkByName(name string) (*types.Network, error)
GetNetworkByName returns the information of network that specified name.
func (*NetworkManager) GetNetworkByPartialID ¶
func (nm *NetworkManager) GetNetworkByPartialID(partialID string) (*types.Network, error)
GetNetworkByPartialID returns the information of network that ID starts with the given prefix. If there are not matching networks, it fails with ErrNotfound. If there are multiple matching networks, it fails with ErrTooMany.
func (*NetworkManager) GetNetworksByPartialID ¶
func (nm *NetworkManager) GetNetworksByPartialID(partialID string) []*types.Network
GetNetworksByPartialID returns a list of networks that ID starts with the given prefix.
func (*NetworkManager) List ¶
func (nm *NetworkManager) List(ctx context.Context, labels map[string]string) ([]*types.Network, error)
List returns all networks on this host.
func (*NetworkManager) LogNetworkEvent ¶
func (nm *NetworkManager) LogNetworkEvent(ctx context.Context, nw libnetwork.Network, action string)
LogNetworkEvent generates an event related to a network with only the default attributes
type NetworkMgr ¶
type NetworkMgr interface { // Create is used to create network. Create(ctx context.Context, create apitypes.NetworkCreateConfig) (*types.Network, error) // Get returns the information of network that specified name/id. Get(ctx context.Context, name string) (*types.Network, error) // List returns all networks on this host. List(ctx context.Context, labels map[string]string) ([]*types.Network, error) // NetworkRemove is used to delete an existing network. Remove(ctx context.Context, name string) error // EndpointCreate is used to create network endpoint. EndpointCreate(ctx context.Context, endpoint *types.Endpoint) (string, error) // EndpointInfo returns the information of endpoint that specified name/id. EndpointInfo(ctx context.Context, name string) (*types.Endpoint, error) // EndpointList returns all endpoints. EndpointList(ctx context.Context) ([]*types.Endpoint, error) // EndpointRemove is used to remove network endpoint. EndpointRemove(ctx context.Context, endpoint *types.Endpoint) error // Controller returns the network controller. Controller() libnetwork.NetworkController }
NetworkMgr defines interface to manage container network.
type Snapshot ¶
type Snapshot struct { // Key is the key of the snapshot Key string // Kind is the kind of the snapshot (active, committed, view) Kind snapshots.Kind // Size is the size of the snapshot in bytes. Size uint64 // Inodes is the number of inodes used by the snapshot Inodes uint64 // Timestamp is latest update time (in nanoseconds) of the snapshot // information. Timestamp int64 }
Snapshot contains the information about the snapshot.
type SnapshotStore ¶
type SnapshotStore struct {
// contains filtered or unexported fields
}
SnapshotStore stores all snapshots.
func NewSnapshotStore ¶
func NewSnapshotStore() *SnapshotStore
NewSnapshotStore create a new snapshot store.
func (*SnapshotStore) Delete ¶
func (s *SnapshotStore) Delete(key string)
Delete deletes the snapshot with specified key.
type SnapshotsSyncer ¶
type SnapshotsSyncer struct {
// contains filtered or unexported fields
}
SnapshotsSyncer syncs snapshot stats periodically.
func (*SnapshotsSyncer) Start ¶
func (s *SnapshotsSyncer) Start()
Start starts the snapshots syncer.
func (*SnapshotsSyncer) Sync ¶
func (s *SnapshotsSyncer) Sync() error
Sync updates the snapshots in the snapshot store.
type SpecWrapper ¶
type SpecWrapper struct {
// contains filtered or unexported fields
}
SpecWrapper wraps the container's specs and add manager operations.
type SystemManager ¶
type SystemManager struct {
// contains filtered or unexported fields
}
SystemManager is an instance of system management.
func NewSystemManager ¶
func NewSystemManager(cfg *config.Config, store *meta.Store, imageManager ImageMgr, eventsService *events.Events) (*SystemManager, error)
NewSystemManager creates a brand new system manager.
func (*SystemManager) Auth ¶
func (mgr *SystemManager) Auth(auth *types.AuthConfig) (string, error)
Auth to log in to a registry.
func (*SystemManager) Info ¶
func (mgr *SystemManager) Info() (types.SystemInfo, error)
Info shows system information of daemon.
func (*SystemManager) SubscribeToEvents ¶
func (mgr *SystemManager) SubscribeToEvents(ctx context.Context, since, until time.Time, filter filters.Args) ([]types.EventsMessage, <-chan *types.EventsMessage, <-chan error)
SubscribeToEvents returns to events on the exchange. Events are sent through the returned channel ch. If an error is encountered, it will be sent on channel errs and errs will be closed. To end the subscription, cancel the provided context.
func (*SystemManager) UpdateDaemon ¶
func (mgr *SystemManager) UpdateDaemon(cfg *types.DaemonUpdateConfig) error
UpdateDaemon updates config of daemon, only label and image proxy are allowed.
func (*SystemManager) Version ¶
func (mgr *SystemManager) Version() (types.SystemVersion, error)
Version shows version of daemon.
type SystemMgr ¶
type SystemMgr interface { Info() (types.SystemInfo, error) Version() (types.SystemVersion, error) Auth(*types.AuthConfig) (string, error) UpdateDaemon(*types.DaemonUpdateConfig) error SubscribeToEvents(ctx context.Context, since, until time.Time, ef filters.Args) ([]types.EventsMessage, <-chan *types.EventsMessage, <-chan error) }
SystemMgr as an interface defines all operations against host.
type VolumeManager ¶
type VolumeManager struct {
// contains filtered or unexported fields
}
VolumeManager is the default implement of interface VolumeMgr.
func NewVolumeManager ¶
NewVolumeManager creates a brand new volume manager.
func (*VolumeManager) Attach ¶
func (vm *VolumeManager) Attach(ctx context.Context, name string, options map[string]string) (*types.Volume, error)
Attach is used to bind a volume to container.
func (*VolumeManager) Create ¶
func (vm *VolumeManager) Create(ctx context.Context, name, driver string, options, labels map[string]string) (*types.Volume, error)
Create is used to create volume.
func (*VolumeManager) Detach ¶
func (vm *VolumeManager) Detach(ctx context.Context, name string, options map[string]string) (*types.Volume, error)
Detach is used to unbind a volume from container.
func (*VolumeManager) List ¶
func (vm *VolumeManager) List(ctx context.Context, labels map[string]string) ([]*types.Volume, error)
List returns all volumes on this host.
func (*VolumeManager) LogVolumeEvent ¶
func (vm *VolumeManager) LogVolumeEvent(ctx context.Context, volumeID, action string, attributes map[string]string)
LogVolumeEvent generates an event related to a volume
type VolumeMgr ¶
type VolumeMgr interface { // Create is used to create volume. Create(ctx context.Context, name, driver string, options, labels map[string]string) (*types.Volume, error) // Get returns the information of volume that specified name/id. Get(ctx context.Context, name string) (*types.Volume, error) // List returns all volumes on this host. List(ctx context.Context, labels map[string]string) ([]*types.Volume, error) // Remove is used to delete an existing volume. Remove(ctx context.Context, name string) error // Path returns the mount path of volume. Path(ctx context.Context, name string) (string, error) // Attach is used to bind a volume to container. Attach(ctx context.Context, name string, options map[string]string) (*types.Volume, error) // Detach is used to unbind a volume from container. Detach(ctx context.Context, name string, options map[string]string) (*types.Volume, error) }
VolumeMgr defines interface to manage container volume.
Source Files ¶
- container.go
- container_checkpoint.go
- container_envs.go
- container_exec.go
- container_list.go
- container_logger.go
- container_logs.go
- container_monitor.go
- container_rich_mode.go
- container_state.go
- container_stats.go
- container_storage.go
- container_types.go
- container_utils.go
- container_validation.go
- events.go
- image.go
- image_load.go
- image_save.go
- image_store.go
- image_types.go
- image_utils.go
- network.go
- network_utils.go
- snapshot.go
- spec.go
- spec_annotations.go
- spec_hook.go
- spec_linux.go
- spec_mount.go
- spec_process.go
- system.go
- volume.go