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) AttachContainer(ctx context.Context, containerID string) (io.WriteCloser, io.ReadCloser, error)
- func (c *Client) BuildImage(ctx context.Context, contextDir, imageName string) error
- func (c *Client) ContainerLogs(ctx context.Context, containerID string) (string, error)
- func (c *Client) CreateContainer(ctx context.Context, image, name string, command []string, ...) (string, error)
- func (c *Client) GetContainerInfo(ctx context.Context, containerID string) (runtime.ContainerInfo, error)
- func (c *Client) ImageExists(ctx context.Context, imageName string) (bool, error)
- func (c *Client) IsContainerRunning(ctx context.Context, containerID string) (bool, error)
- func (c *Client) ListContainers(ctx context.Context) ([]runtime.ContainerInfo, error)
- func (c *Client) PullImage(ctx context.Context, imageName string) error
- func (c *Client) RemoveContainer(ctx context.Context, containerID string) error
- func (c *Client) StopContainer(ctx context.Context, containerID string) 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" )
Common socket paths
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) AttachContainer ¶
func (c *Client) AttachContainer(ctx context.Context, containerID string) (io.WriteCloser, io.ReadCloser, error)
AttachContainer attaches to a container
func (*Client) BuildImage ¶ added in v0.0.10
BuildImage builds a Docker image from a Dockerfile in the specified context directory
func (*Client) ContainerLogs ¶
ContainerLogs gets container logs
func (*Client) CreateContainer ¶
func (c *Client) CreateContainer( ctx context.Context, image, name string, command []string, envVars, labels map[string]string, permissionProfile *permissions.Profile, transportType string, options *runtime.CreateContainerOptions, ) (string, error)
CreateContainer creates a container without starting it. It configures the container based on the provided permission profile and transport type. If options is nil, default options will be used.
func (*Client) GetContainerInfo ¶
func (c *Client) GetContainerInfo(ctx context.Context, containerID string) (runtime.ContainerInfo, error)
GetContainerInfo gets container information
func (*Client) ImageExists ¶
ImageExists checks if an image exists locally
func (*Client) IsContainerRunning ¶
IsContainerRunning checks if a container is running
func (*Client) ListContainers ¶
ListContainers lists containers
func (*Client) RemoveContainer ¶
RemoveContainer removes a container If the container doesn't exist, 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