Documentation
¶
Overview ¶
Package docker provides Docker-specific implementation of container runtime, including creating, starting, stopping, and monitoring containers.
Index ¶
- Constants
- Variables
- func IsContainerNotFound(err error) bool
- func NewMonitor(rt runtime.Runtime, containerID, containerName string) runtime.Monitor
- type Client
- func (c *Client) AttachToWorkload(ctx context.Context, workloadID string) (io.WriteCloser, io.ReadCloser, error)
- func (c *Client) BuildImage(ctx context.Context, contextDir, imageName string) error
- func (c *Client) DeployWorkload(ctx context.Context, image, name string, command []string, ...) (string, error)
- func (c *Client) GetWorkloadInfo(ctx context.Context, workloadID string) (runtime.ContainerInfo, error)
- func (c *Client) GetWorkloadLogs(ctx context.Context, workloadID string, follow bool) (string, error)
- func (c *Client) ImageExists(ctx context.Context, imageName string) (bool, error)
- func (c *Client) IsWorkloadRunning(ctx context.Context, workloadID string) (bool, error)
- func (c *Client) ListWorkloads(ctx context.Context) ([]runtime.ContainerInfo, error)
- func (c *Client) PullImage(ctx context.Context, imageName string) error
- func (c *Client) RemoveWorkload(ctx context.Context, workloadID string) error
- func (c *Client) StopWorkload(ctx context.Context, workloadID string) error
- func (*Client) VerifyImage(_ context.Context, serverInfo *registry.Server, imageRef string) (bool, error)
- type ContainerError
- type ContainerMonitor
Constants ¶
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
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 ¶
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 ¶
IsContainerNotFound checks if the error is a container not found error
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client implements the Runtime interface for container operations
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
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 ¶
ImageExists checks if an image exists locally
func (*Client) IsWorkloadRunning ¶ added in v0.0.37
IsWorkloadRunning checks if a workload is running
func (*Client) ListWorkloads ¶ added in v0.0.37
ListWorkloads lists workloads
func (*Client) RemoveWorkload ¶ added in v0.0.37
RemoveWorkload removes a workload If the workload doesn't exist, it returns success
func (*Client) StopWorkload ¶ added in v0.0.37
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