package plugin import "context" type ContainerInfo struct { ID string Runtime string Spec []byte } type Container interface { // Information of the container Info() ContainerInfo // Start the container's user defined process Start(context.Context) error // State returns the container's state State(context.Context) (State, error) // Pause pauses the container process Pause(context.Context) error // Resume unpauses the container process Resume(context.Context) error // Kill signals a container Kill(context.Context, uint32, uint32, bool) error // Exec adds a process into the container Exec(context.Context, ExecOpts) (Process, error) // Processes returns all pids for the container Processes(context.Context) ([]uint32, error) // Pty resizes the processes pty/console Pty(context.Context, uint32, ConsoleSize) error // CloseStdin closes the processes stdin CloseStdin(context.Context, uint32) error // Checkpoint checkpoints a container to an image with live system data Checkpoint(context.Context, CheckpointOpts) error } type CheckpointOpts struct { Exit bool AllowTCP bool AllowUnixSockets bool AllowTerminal bool FileLocks bool EmptyNamespaces []string Path string } type ExecOpts struct { Spec []byte IO IO } type Process interface { // State returns the process state State(context.Context) (State, error) // Kill signals a container Kill(context.Context, uint32, bool) error } type ConsoleSize struct { Width uint32 Height uint32 } type Status int const ( CreatedStatus Status = iota + 1 RunningStatus StoppedStatus DeletedStatus PausedStatus ) type State interface { // Status is the current status of the container Status() Status // Pid is the main process id for the container Pid() uint32 }