123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package types // import "github.com/docker/docker/libcontainerd/types"
- import (
- "context"
- "syscall"
- "time"
- "github.com/containerd/containerd"
- "github.com/containerd/containerd/cio"
- specs "github.com/opencontainers/runtime-spec/specs-go"
- )
- // EventType represents a possible event from libcontainerd
- type EventType string
- // Event constants used when reporting events
- const (
- EventUnknown EventType = "unknown"
- EventExit EventType = "exit"
- EventOOM EventType = "oom"
- EventCreate EventType = "create"
- EventStart EventType = "start"
- EventExecAdded EventType = "exec-added"
- EventExecStarted EventType = "exec-started"
- EventPaused EventType = "paused"
- EventResumed EventType = "resumed"
- )
- // EventInfo contains the event info
- type EventInfo struct {
- ContainerID string
- ProcessID string
- Pid uint32
- ExitCode uint32
- ExitedAt time.Time
- Error error
- }
- // Backend defines callbacks that the client of the library needs to implement.
- type Backend interface {
- ProcessEvent(containerID string, event EventType, ei EventInfo) error
- }
- // Process of a container
- type Process interface {
- // Pid is the system specific process id
- Pid() uint32
- // Kill sends the provided signal to the process
- Kill(ctx context.Context, signal syscall.Signal) error
- // Resize changes the width and height of the process's terminal
- Resize(ctx context.Context, width, height uint32) error
- // Delete removes the process and any resources allocated returning the exit status
- Delete(context.Context) (*containerd.ExitStatus, error)
- }
- // Client provides access to containerd features.
- type Client interface {
- Version(ctx context.Context) (containerd.Version, error)
- // LoadContainer loads the metadata for a container from containerd.
- LoadContainer(ctx context.Context, containerID string) (Container, error)
- // NewContainer creates a new containerd container.
- NewContainer(ctx context.Context, containerID string, spec *specs.Spec, shim string, runtimeOptions interface{}, opts ...containerd.NewContainerOpts) (Container, error)
- }
- // Container provides access to a containerd container.
- type Container interface {
- Start(ctx context.Context, checkpointDir string, withStdin bool, attachStdio StdioCallback) (Task, error)
- Task(ctx context.Context) (Task, error)
- // AttachTask returns the current task for the container and reattaches
- // to the IO for the running task. If no task exists for the container
- // a NotFound error is returned.
- //
- // Clients must make sure that only one reader is attached to the task.
- AttachTask(ctx context.Context, attachStdio StdioCallback) (Task, error)
- // Delete removes the container and associated resources
- Delete(context.Context) error
- }
- // Task provides access to a running containerd container.
- type Task interface {
- Process
- // Pause suspends the execution of the task
- Pause(context.Context) error
- // Resume the execution of the task
- Resume(context.Context) error
- Stats(ctx context.Context) (*Stats, error)
- // Pids returns a list of system specific process ids inside the task
- Pids(context.Context) ([]containerd.ProcessInfo, error)
- Summary(ctx context.Context) ([]Summary, error)
- // ForceDelete forcefully kills the task's processes and deletes the task
- ForceDelete(context.Context) error
- // Status returns the executing status of the task
- Status(ctx context.Context) (containerd.Status, error)
- // Exec creates and starts a new process inside the task
- Exec(ctx context.Context, processID string, spec *specs.Process, withStdin bool, attachStdio StdioCallback) (Process, error)
- UpdateResources(ctx context.Context, resources *Resources) error
- CreateCheckpoint(ctx context.Context, checkpointDir string, exit bool) error
- }
- // StdioCallback is called to connect a container or process stdio.
- type StdioCallback func(io *cio.DirectIO) (cio.IO, error)
|