docker

package
v0.1.6 Latest Latest
Warning

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

Go to latest
Published: Jul 10, 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 (
	ToolhiveAuxiliaryWorkloadLabel = "toolhive-auxiliary-workload"
	LabelValueTrue                 = "true"
)

Workloads

View Source
const DnsImage = "dockurr/dnsmasq:latest"

DnsImage is the default DNS image used for network permissions

Variables

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

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

	// 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 Docker (and compatible runtimes)

func NewClient

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

NewClient creates a new container client

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) 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,
	isolateNetwork bool,
) (string, int, 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) IsRunning added in v0.1.1

func (c *Client) IsRunning(ctx context.Context) error

IsRunning checks the health of the container runtime. This is used to verify that the runtime is operational and can manage workloads.

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) 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

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

Directories

Path Synopsis
Package sdk provides a factory method for creating a Docker client.
Package sdk provides a factory method for creating a Docker client.

Jump to

Keyboard shortcuts

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