1package runtime
2
3import (
4 "context"
5 "io"
6)
7
8// Container represents a running container
9type Container struct {
10 ID string
11 Image string
12 Name string
13 Status string
14 Ports []int
15 Labels map[string]string
16}
17
18// ContainerConfig holds configuration for creating a container
19type ContainerConfig struct {
20 Image string
21 Name string
22 Env []string
23 Ports []int
24 Labels map[string]string
25 WorkingDir string
26 Cmd []string
27 AutoRemove bool
28}
29
30// Runtime interface defines the contract for container runtime implementations
31type Runtime interface {
32 // Container lifecycle
33 CreateContainer(ctx context.Context, config *ContainerConfig) (*Container, error)
34 StartContainer(ctx context.Context, containerID string) error
35 StopContainer(ctx context.Context, containerID string) error
36 RestartContainer(ctx context.Context, containerID string) error
37 RemoveContainer(ctx context.Context, containerID string, force bool) error
38
39 // Container inspection
40 ListContainers(ctx context.Context, all bool) ([]*Container, error)
41 InspectContainer(ctx context.Context, containerID string) (*Container, error)
42 GetContainerLogs(ctx context.Context, containerID string, follow bool) (io.ReadCloser, error)
43
44 // Image operations
45 PullImage(ctx context.Context, image string) error
46 RemoveImage(ctx context.Context, image string, force bool) error
47 ListImages(ctx context.Context) ([]string, error)
48
49 // Runtime information
50 Ping(ctx context.Context) error
51 Version(ctx context.Context) (string, error)
52
53 // Health and status
54 IsContainerRunning(ctx context.Context, containerID string) (bool, error)
55 GetContainerPort(ctx context.Context, containerID string, internalPort int) (int, error)
56
57 // Image and port inspection
58 GetImageExposedPorts(ctx context.Context, imageRef string) ([]int, error)
59 GetContainerExposedPorts(ctx context.Context, containerID string) ([]int, error)
60 GetContainerNetworkInfo(ctx context.Context, containerID string) (string, int, error)
61}