docker

package
v0.0.37 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2025 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Overview

Package docker provides Docker-specific implementation of container runtime, including creating, starting, stopping, and monitoring containers.

Index

Constants

View Source
const (
	// PodmanSocketPath is the default Podman socket path
	PodmanSocketPath = "/var/run/podman/podman.sock"
	// PodmanXDGRuntimeSocketPath is the XDG runtime Podman socket path
	PodmanXDGRuntimeSocketPath = "podman/podman.sock"
	// DockerSocketPath is the default Docker socket path
	DockerSocketPath = "/var/run/docker.sock"
	// DockerDesktopMacSocketPath is the Docker Desktop socket path on macOS
	DockerDesktopMacSocketPath = ".docker/run/docker.sock"
)

Common socket paths

View Source
const (
	// DockerSocketEnv is the environment variable for custom Docker socket path
	DockerSocketEnv = "TOOLHIVE_DOCKER_SOCKET"
	// PodmanSocketEnv is the environment variable for custom Podman socket path
	PodmanSocketEnv = "TOOLHIVE_PODMAN_SOCKET"
)

Environment variable names

Variables

View Source
var (
	// ErrContainerNotFound is returned when a container is not found
	ErrContainerNotFound = fmt.Errorf("container not found")

	// ErrContainerAlreadyExists is returned when a container already exists
	ErrContainerAlreadyExists = fmt.Errorf("container already exists")

	// ErrContainerNotRunning is returned when a container is not running
	ErrContainerNotRunning = fmt.Errorf("container not running")

	// ErrContainerAlreadyRunning is returned when a container is already running
	ErrContainerAlreadyRunning = fmt.Errorf("container already running")

	// ErrRuntimeNotFound is returned when a container runtime is not found
	ErrRuntimeNotFound = fmt.Errorf("container runtime not found")

	// ErrInvalidRuntimeType is returned when an invalid runtime type is specified
	ErrInvalidRuntimeType = fmt.Errorf("invalid runtime type")

	// ErrAttachFailed is returned when attaching to a container fails
	ErrAttachFailed = fmt.Errorf("failed to attach to container")

	// ErrContainerExited is returned when a container has exited unexpectedly
	ErrContainerExited = fmt.Errorf("container exited unexpectedly")
)

Error types for container operations

Functions

func IsContainerNotFound

func IsContainerNotFound(err error) bool

IsContainerNotFound checks if the error is a container not found error

func NewMonitor

func NewMonitor(rt runtime.Runtime, containerID, containerName string) runtime.Monitor

NewMonitor creates a new container monitor

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client implements the Runtime interface for container operations

func NewClient

func NewClient(ctx context.Context) (*Client, error)

NewClient creates a new container client

func NewClientWithSocketPath

func NewClientWithSocketPath(ctx context.Context, socketPath string, runtimeType runtime.Type) (*Client, error)

NewClientWithSocketPath creates a new container client with a specific socket path

func (*Client) AttachToWorkload added in v0.0.37

func (c *Client) AttachToWorkload(ctx context.Context, workloadID string) (io.WriteCloser, io.ReadCloser, error)

AttachToWorkload attaches to a workload

func (*Client) BuildImage added in v0.0.32

func (c *Client) BuildImage(ctx context.Context, contextDir, imageName string) error

BuildImage builds a Docker image from a Dockerfile in the specified context directory

func (*Client) DeployWorkload added in v0.0.37

func (c *Client) DeployWorkload(
	ctx context.Context,
	image, name string,
	command []string,
	envVars, labels map[string]string,
	permissionProfile *permissions.Profile,
	transportType string,
	options *runtime.DeployWorkloadOptions,
) (string, error)

DeployWorkload creates and starts a workload. It configures the workload based on the provided permission profile and transport type. If options is nil, default options will be used.

func (*Client) GetWorkloadInfo added in v0.0.37

func (c *Client) GetWorkloadInfo(ctx context.Context, workloadID string) (runtime.ContainerInfo, error)

GetWorkloadInfo gets workload information

func (*Client) GetWorkloadLogs added in v0.0.37

func (c *Client) GetWorkloadLogs(ctx context.Context, workloadID string, follow bool) (string, error)

GetWorkloadLogs gets workload logs

func (*Client) ImageExists

func (c *Client) ImageExists(ctx context.Context, imageName string) (bool, error)

ImageExists checks if an image exists locally

func (*Client) IsWorkloadRunning added in v0.0.37

func (c *Client) IsWorkloadRunning(ctx context.Context, workloadID string) (bool, error)

IsWorkloadRunning checks if a workload is running

func (*Client) ListWorkloads added in v0.0.37

func (c *Client) ListWorkloads(ctx context.Context) ([]runtime.ContainerInfo, error)

ListWorkloads lists workloads

func (*Client) PullImage

func (c *Client) PullImage(ctx context.Context, imageName string) error

PullImage pulls an image from a registry

func (*Client) RemoveWorkload added in v0.0.37

func (c *Client) RemoveWorkload(ctx context.Context, workloadID string) error

RemoveWorkload removes a workload If the workload doesn't exist, it returns success

func (*Client) StopWorkload added in v0.0.37

func (c *Client) StopWorkload(ctx context.Context, workloadID string) error

StopWorkload stops a workload If the workload is already stopped, it returns success

func (*Client) VerifyImage added in v0.0.35

func (*Client) VerifyImage(_ context.Context, serverInfo *registry.Server, imageRef string) (bool, error)

VerifyImage verifies a container image

type ContainerError

type ContainerError struct {
	// Err is the underlying error
	Err error
	// ContainerID is the ID of the container
	ContainerID string
	// Message is an optional error message
	Message string
}

ContainerError represents an error related to container operations

func NewContainerError

func NewContainerError(err error, containerID, message string) *ContainerError

NewContainerError creates a new container error

func (*ContainerError) Error

func (e *ContainerError) Error() string

Error returns the error message

func (*ContainerError) Unwrap

func (e *ContainerError) Unwrap() error

Unwrap returns the underlying error

type ContainerMonitor

type ContainerMonitor struct {
	// contains filtered or unexported fields
}

ContainerMonitor watches a container's state and reports when it exits

func (*ContainerMonitor) StartMonitoring

func (m *ContainerMonitor) StartMonitoring(ctx context.Context) (<-chan error, error)

StartMonitoring starts monitoring the container

func (*ContainerMonitor) StopMonitoring

func (m *ContainerMonitor) StopMonitoring()

StopMonitoring stops monitoring the container

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL