Documentation
¶
Overview ¶
Package runtime provides interfaces and types for container runtimes, including creating, starting, stopping, and monitoring containers.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ContainerInfo ¶
type ContainerInfo struct { // ID is the container ID ID string // Name is the container name Name string // Image is the container image Image string // Status is the container status Status string // State is the container state State string // Created is the container creation timestamp Created time.Time // Labels is the container labels Labels map[string]string // Ports is the container port mappings Ports []PortMapping }
ContainerInfo represents information about a container
type CreateContainerOptions ¶
type CreateContainerOptions struct { // ExposedPorts is a map of container ports to expose // The key is in the format "port/protocol" (e.g., "8080/tcp") // The value is an empty struct (not used) ExposedPorts map[string]struct{} // PortBindings is a map of container ports to host ports // The key is in the format "port/protocol" (e.g., "8080/tcp") // The value is a slice of host port bindings PortBindings map[string][]PortBinding // AttachStdio indicates whether to attach stdin/stdout/stderr // This is typically set to true for stdio transport AttachStdio bool // K8sPodTemplatePatch is a JSON string to patch the Kubernetes pod template // Only applicable when using Kubernetes runtime K8sPodTemplatePatch string }
CreateContainerOptions represents options for creating a container
func NewCreateContainerOptions ¶
func NewCreateContainerOptions() *CreateContainerOptions
NewCreateContainerOptions creates a new CreateContainerOptions with default values
type Monitor ¶
type Monitor interface { // StartMonitoring starts monitoring the container // Returns a channel that will receive an error if the container exits unexpectedly StartMonitoring(ctx context.Context) (<-chan error, error) // StopMonitoring stops monitoring the container StopMonitoring() }
Monitor defines the interface for container monitoring
type Mount ¶
type Mount struct { // Source is the source path on the host Source string // Target is the target path in the container Target string // ReadOnly indicates if the mount is read-only ReadOnly bool }
Mount represents a volume mount
type PermissionConfig ¶
type PermissionConfig struct { // Mounts is the list of volume mounts Mounts []Mount // NetworkMode is the network mode NetworkMode string // CapDrop is the list of capabilities to drop CapDrop []string // CapAdd is the list of capabilities to add CapAdd []string // SecurityOpt is the list of security options SecurityOpt []string }
PermissionConfig represents container permission configuration
type PortBinding ¶
type PortBinding struct { // HostIP is the host IP to bind to (empty for all interfaces) HostIP string // HostPort is the host port to bind to (empty for random port) HostPort string }
PortBinding represents a host port binding
type PortMapping ¶
type PortMapping struct { // ContainerPort is the port inside the container ContainerPort int // HostPort is the port on the host HostPort int // Protocol is the protocol (tcp, udp) Protocol string }
PortMapping represents a port mapping for a container
type Runtime ¶
type Runtime interface { // CreateContainer creates a container without starting it // If options is nil, default options will be used //todo: make args a struct to reduce number of args (linter going crazy) CreateContainer( ctx context.Context, image, name string, command []string, envVars, labels map[string]string, permissionProfile *permissions.Profile, transportType string, options *CreateContainerOptions, ) (string, error) // ListContainers lists containers ListContainers(ctx context.Context) ([]ContainerInfo, error) // StopContainer stops a container StopContainer(ctx context.Context, containerID string) error // RemoveContainer removes a container RemoveContainer(ctx context.Context, containerID string) error // ContainerLogs gets container logs ContainerLogs(ctx context.Context, containerID string) (string, error) // IsContainerRunning checks if a container is running IsContainerRunning(ctx context.Context, containerID string) (bool, error) // GetContainerInfo gets container information GetContainerInfo(ctx context.Context, containerID string) (ContainerInfo, error) // AttachContainer attaches to a container AttachContainer(ctx context.Context, containerID string) (io.WriteCloser, io.ReadCloser, error) // ImageExists checks if an image exists locally ImageExists(ctx context.Context, image string) (bool, error) // PullImage pulls an image from a registry PullImage(ctx context.Context, image string) error // BuildImage builds a Docker image from a Dockerfile in the specified context directory BuildImage(ctx context.Context, contextDir, imageName string) error }
Runtime defines the interface for container runtimes