package runtime

import "github.com/Microsoft/hcsshim/internal/guest/runtime"

Package runtime defines the interface between the GCS and an OCI container runtime.

Index

Variables

var (
	ErrContainerAlreadyExists = gcserr.WrapHresult(errors.New("container already exist"), gcserr.HrVmcomputeSystemAlreadyExists)
	ErrContainerDoesNotExist  = gcserr.WrapHresult(errors.New("container does not exist"), gcserr.HrVmcomputeSystemNotFound)
	ErrContainerStillRunning  = gcserr.WrapHresult(errors.New("container still running"), gcserr.HrVmcomputeInvalidState)
	ErrContainerNotRunning    = gcserr.WrapHresult(errors.New("container not running"), gcserr.HrVmcomputeSystemAlreadyStopped)
	ErrContainerNotStopped    = gcserr.WrapHresult(errors.New("container not stopped"), gcserr.HrVmcomputeInvalidState)
	ErrInvalidContainerID     = gcserr.WrapHresult(errors.New("invalid container ID"), gcserr.HrErrInvalidArg)
)

Types

type Container

type Container interface {
	Process
	ID() string
	Exists() (bool, error)
	Start() error
	ExecProcess(process *oci.Process, stdioSet *stdio.ConnectionSet) (p Process, err error)
	Kill(signal syscall.Signal) error
	Pause() error
	Resume() error
	GetState() (*ContainerState, error)
	GetRunningProcesses() ([]ContainerProcessState, error)
	GetAllProcesses() ([]ContainerProcessState, error)
	GetInitProcess() (Process, error)
	Update(resources interface{}) error
}

Container is an interface to manipulate container state.

type ContainerProcessState

type ContainerProcessState struct {
	Pid              int
	Command          []string
	CreatedByRuntime bool
	IsZombie         bool
}

ContainerProcessState gives information about a process created by a Runtime.

type ContainerState

type ContainerState struct {
	OCIVersion string
	ID         string
	Pid        int
	BundlePath string
	RootfsPath string
	Status     string
	Created    string
}

ContainerState gives information about a container created by a Runtime.

type Process

type Process interface {
	Wait() (int, error)
	Pid() int
	Delete() error
	Tty() *stdio.TtyRelay
	PipeRelay() *stdio.PipeRelay
}

Process is an interface to manipulate process state.

type Runtime

type Runtime interface {
	CreateContainer(id string, bundlePath string, stdioSet *stdio.ConnectionSet) (c Container, err error)
	ListContainerStates() ([]ContainerState, error)
}

Runtime is the interface defining commands over an OCI container runtime, such as runC.

type StdioPipes

type StdioPipes struct {
	In  io.WriteCloser
	Out io.ReadCloser
	Err io.ReadCloser
}

StdioPipes contain the interfaces for reading from and writing to a process's stdio.

Source Files

doc.go runtime.go

Directories

PathSynopsis
internal/guest/runtime/hcsv2
internal/guest/runtime/runcPackage runc defines an implementation of the Runtime interface which uses runC as the container runtime.
Version
v0.12.9 (latest)
Published
Oct 30, 2024
Platform
linux/amd64
Imports
6 packages
Last checked
14 hours ago

Tools for package owners.