Help us shape the future of Go! Take the 2026 Go Developer Survey

docker

package
v0.0.44 Latest Latest
Warning

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

Go to latest
Published: Jun 9, 2025 License: Apache-2.0 Imports: 26 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