...

Package runtime

import "github.com/containerd/containerd/runtime"
Overview
Index
Subdirectories

Overview ▾

Constants

const (
    // TaskCreateEventTopic for task create
    TaskCreateEventTopic = "/tasks/create"
    // TaskStartEventTopic for task start
    TaskStartEventTopic = "/tasks/start"
    // TaskOOMEventTopic for task oom
    TaskOOMEventTopic = "/tasks/oom"
    // TaskExitEventTopic for task exit
    TaskExitEventTopic = "/tasks/exit"
    // TaskDeleteEventTopic for task delete
    TaskDeleteEventTopic = "/tasks/delete"
    // TaskExecAddedEventTopic for task exec create
    TaskExecAddedEventTopic = "/tasks/exec-added"
    // TaskExecStartedEventTopic for task exec start
    TaskExecStartedEventTopic = "/tasks/exec-started"
    // TaskPausedEventTopic for task pause
    TaskPausedEventTopic = "/tasks/paused"
    // TaskResumedEventTopic for task resume
    TaskResumedEventTopic = "/tasks/resumed"
    // TaskCheckpointedEventTopic for task checkpoint
    TaskCheckpointedEventTopic = "/tasks/checkpointed"
    // TaskUnknownTopic for unknown task events
    TaskUnknownTopic = "/tasks/?"
)

type ConsoleSize

ConsoleSize of a pty or windows terminal

type ConsoleSize struct {
    Width  uint32
    Height uint32
}

type CreateOpts

CreateOpts contains task creation data

type CreateOpts struct {
    // Spec is the OCI runtime spec
    Spec typeurl.Any
    // Rootfs mounts to perform to gain access to the container's filesystem
    Rootfs []mount.Mount
    // IO for the container's main process
    IO IO
    // Checkpoint digest to restore container state
    Checkpoint string
    // RuntimeOptions for the runtime
    RuntimeOptions typeurl.Any
    // TaskOptions received for the task
    TaskOptions typeurl.Any
    // Runtime name to use (e.g. `io.containerd.NAME.VERSION`).
    // As an alternative full abs path to binary may be specified instead.
    Runtime string
    // SandboxID is an optional ID of sandbox this container belongs to
    SandboxID string
}

type ExecOpts

ExecOpts provides additional options for additional processes running in a task

type ExecOpts struct {
    Spec *types.Any
    IO   IO
}

type ExecProcess

ExecProcess is a process spawned in container via Task.Exec call. The only difference from a regular `Process` is that exec process can delete self, while task process requires slightly more complex logic and needs to be deleted through the task manager.

type ExecProcess interface {
    Process

    // Delete deletes the process
    Delete(ctx context.Context) (*Exit, error)
}

type Exit

Exit information for a process

type Exit struct {
    Pid       uint32
    Status    uint32
    Timestamp time.Time
}

type IO

IO holds process IO information

type IO struct {
    Stdin    string
    Stdout   string
    Stderr   string
    Terminal bool
}

type NSMap

NSMap extends Map type with a notion of namespaces passed via Context.

type NSMap[T object] struct {
    // contains filtered or unexported fields
}

func NewNSMap

func NewNSMap[T object]() *NSMap[T]

NewNSMap returns a new NSMap

func (*NSMap[T]) Add

func (m *NSMap[T]) Add(ctx context.Context, t T) error

Add a task

func (*NSMap[T]) AddWithNamespace

func (m *NSMap[T]) AddWithNamespace(namespace string, t T) error

AddWithNamespace adds a task with the provided namespace

func (*NSMap[T]) Delete

func (m *NSMap[T]) Delete(ctx context.Context, id string)

Delete a task

func (*NSMap[T]) Get

func (m *NSMap[T]) Get(ctx context.Context, id string) (T, error)

Get a task

func (*NSMap[T]) GetAll

func (m *NSMap[T]) GetAll(ctx context.Context, noNS bool) ([]T, error)

GetAll objects under a namespace

func (*NSMap[T]) IsEmpty

func (m *NSMap[T]) IsEmpty() bool

type PlatformRuntime

PlatformRuntime is responsible for the creation and management of tasks and processes for a platform.

type PlatformRuntime interface {
    // ID of the runtime
    ID() string
    // Create creates a task with the provided id and options.
    Create(ctx context.Context, taskID string, opts CreateOpts) (Task, error)
    // Get returns a task.
    Get(ctx context.Context, taskID string) (Task, error)
    // Tasks returns all the current tasks for the runtime.
    // Any container runs at most one task at a time.
    Tasks(ctx context.Context, all bool) ([]Task, error)
    // Delete remove a task.
    Delete(ctx context.Context, taskID string) (*Exit, error)
}

type Process

Process is a runtime object for an executing process inside a container

type Process interface {
    // ID of the process
    ID() string
    // State returns the process state
    State(ctx context.Context) (State, error)
    // Kill signals a container
    Kill(ctx context.Context, signal uint32, all bool) error
    // ResizePty resizes the processes pty/console
    ResizePty(ctx context.Context, size ConsoleSize) error
    // CloseIO closes the processes IO
    CloseIO(ctx context.Context) error
    // Start the container's user defined process
    Start(ctx context.Context) error
    // Wait for the process to exit
    Wait(ctx context.Context) (*Exit, error)
}

type ProcessInfo

ProcessInfo holds platform specific process information

type ProcessInfo struct {
    // Pid is the process ID
    Pid uint32
    // Info includes additional process information
    // Info varies by platform
    Info interface{}
}

type State

State information for a process

type State struct {
    // Status is the current status of the container
    Status Status
    // Pid is the main process id for the container
    Pid uint32
    // ExitStatus of the process
    // Only valid if the Status is Stopped
    ExitStatus uint32
    // ExitedAt is the time at which the process exited
    // Only valid if the Status is Stopped
    ExitedAt time.Time
    Stdin    string
    Stdout   string
    Stderr   string
    Terminal bool
}

type Status

Status is the runtime status of a task and/or process

type Status int
const (
    // CreatedStatus when a process has been created
    CreatedStatus Status = iota + 1
    // RunningStatus when a process is running
    RunningStatus
    // StoppedStatus when a process has stopped
    StoppedStatus
    // DeletedStatus when a process has been deleted
    DeletedStatus
    // PausedStatus when a process is paused
    PausedStatus
    // PausingStatus when a process is currently pausing
    PausingStatus
)

type Task

Task is the runtime object for an executing container

type Task interface {
    Process

    // PID of the process
    PID(ctx context.Context) (uint32, error)
    // Namespace that the task exists in
    Namespace() string
    // Pause pauses the container process
    Pause(ctx context.Context) error
    // Resume unpauses the container process
    Resume(ctx context.Context) error
    // Exec adds a process into the container
    Exec(ctx context.Context, id string, opts ExecOpts) (ExecProcess, error)
    // Pids returns all pids
    Pids(ctx context.Context) ([]ProcessInfo, error)
    // Checkpoint checkpoints a container to an image with live system data
    Checkpoint(ctx context.Context, path string, opts *types.Any) error
    // Update sets the provided resources to a running task
    Update(ctx context.Context, resources *types.Any, annotations map[string]string) error
    // Process returns a process within the task for the provided id
    Process(ctx context.Context, id string) (ExecProcess, error)
    // Stats returns runtime specific metrics for a task
    Stats(ctx context.Context) (*types.Any, error)
}

type TaskInfo

TaskInfo provides task specific information

type TaskInfo struct {
    ID        string
    Runtime   string
    Spec      []byte
    Namespace string
}

type TaskMonitor

TaskMonitor provides an interface for monitoring of containers within containerd

type TaskMonitor interface {
    // Monitor adds the provided container to the monitor.
    // Labels are optional (can be nil) key value pairs to be added to the metrics namespace.
    Monitor(task Task, labels map[string]string) error
    // Stop stops and removes the provided container from the monitor
    Stop(task Task) error
}

func NewMultiTaskMonitor

func NewMultiTaskMonitor(monitors ...TaskMonitor) TaskMonitor

NewMultiTaskMonitor returns a new TaskMonitor broadcasting to the provided monitors

func NewNoopMonitor

func NewNoopMonitor() TaskMonitor

NewNoopMonitor is a task monitor that does nothing

Subdirectories

Name Synopsis
..
linux
runctypes
opts
restart Package restart enables containers to have labels added and monitored to keep the container's task running if it is killed.
monitor
v1
linux
shim
client
v1 Code generated by protoc-gen-go-ttrpc.
v2
example
cmd
logging
runc
manager
options
pause
task
plugin
v1
v2
shim