144 lines
5.0 KiB
Go
144 lines
5.0 KiB
Go
// Package containerengine 定义更新执行器所依赖的容器运行时边界。
|
|
//
|
|
// 该包只声明容器运行时所必需的最小抽象,包括引擎接口、镜像、容器、
|
|
// 挂载等数据结构,不包含任何具体实现细节;具体实现见同包的 moby.go。
|
|
package containerengine
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"io"
|
|
)
|
|
|
|
// ErrNotFound 表示在容器引擎中找不到目标对象(镜像或容器)。
|
|
var ErrNotFound = errors.New("container engine object not found")
|
|
|
|
// Platform 描述一个显式的 OCI 操作系统与 CPU 平台。
|
|
type Platform struct {
|
|
// OS 表示操作系统名称,例如 linux。
|
|
OS string
|
|
// Architecture 表示 CPU 架构,例如 amd64。
|
|
Architecture string
|
|
// Variant 表示架构变体,例如 v8,可为空字符串。
|
|
Variant string
|
|
}
|
|
|
|
// Image 引擎返回的不可变镜像信息。
|
|
type Image struct {
|
|
// ID 表示镜像的唯一标识。
|
|
ID string
|
|
// RepoDigests 表示镜像在仓库中的内容摘要列表。
|
|
RepoDigests []string
|
|
// DescriptorDigest 表示 OCI 描述符摘要,不可用时为空字符串。
|
|
DescriptorDigest string
|
|
// Platform 表示镜像的目标操作系统与 CPU 平台。
|
|
Platform Platform
|
|
}
|
|
|
|
// RestartPolicy 传递给引擎的重启策略,引擎不会为其附加隐式默认值。
|
|
type RestartPolicy struct {
|
|
// Name 表示策略名称,例如 always、on-failure。
|
|
Name string
|
|
// MaximumRetryCount 表示策略为 on-failure 时的最大重试次数。
|
|
MaximumRetryCount int
|
|
}
|
|
|
|
// Mount 表示一个显式的容器挂载。
|
|
type Mount struct {
|
|
// Type 表示挂载类型,例如 bind、volume。
|
|
Type string
|
|
// Source 表示宿主机上的源路径或卷名。
|
|
Source string
|
|
// Target 表示容器内的目标路径。
|
|
Target string
|
|
// ReadOnly 表示挂载是否为只读。
|
|
ReadOnly bool
|
|
}
|
|
|
|
// ContainerSpec 包含后端执行器控制的容器全部属性。
|
|
type ContainerSpec struct {
|
|
// Name 表示容器名称。
|
|
Name string
|
|
// ImageReference 表示要使用的镜像引用。
|
|
ImageReference string
|
|
// Platform 表示容器运行的目标平台。
|
|
Platform Platform
|
|
// Environment 表示以 KEY=VALUE 形式给出的环境变量列表。
|
|
Environment []string
|
|
// Labels 表示附加到容器的键值标签。
|
|
Labels map[string]string
|
|
// NetworkMode 表示容器的网络模式。
|
|
NetworkMode string
|
|
// RestartPolicy 表示容器的重启策略。
|
|
RestartPolicy RestartPolicy
|
|
// Mounts 表示容器的挂载列表。
|
|
Mounts []Mount
|
|
// User 表示容器内的运行用户。
|
|
User string
|
|
// StopTimeoutSeconds 表示停止容器的超时秒数。
|
|
StopTimeoutSeconds int
|
|
}
|
|
|
|
// Container 执行幂等检查所需的容器运行时状态。
|
|
type Container struct {
|
|
// ID 表示容器标识。
|
|
ID string
|
|
// Name 表示容器名称。
|
|
Name string
|
|
// ImageID 表示容器所基于的镜像标识。
|
|
ImageID string
|
|
// ImageReference 表示创建容器时使用的镜像引用。
|
|
ImageReference string
|
|
// Platform 表示容器的运行平台。
|
|
Platform string
|
|
// Running 表示容器是否正在运行。
|
|
Running bool
|
|
// Dead 表示容器是否已经停止且不可重启。
|
|
Dead bool
|
|
// Status 表示容器的原始状态字符串。
|
|
Status string
|
|
// Environment 表示容器的环境变量列表。
|
|
Environment []string
|
|
// Labels 表示容器的键值标签。
|
|
Labels map[string]string
|
|
// NetworkMode 表示容器的网络模式。
|
|
NetworkMode string
|
|
// RestartPolicy 表示容器的重启策略。
|
|
RestartPolicy RestartPolicy
|
|
// Mounts 表示容器的挂载列表。
|
|
Mounts []Mount
|
|
// User 表示容器内的运行用户。
|
|
User string
|
|
// StopTimeoutSeconds 表示停止容器的超时秒数。
|
|
StopTimeoutSeconds int
|
|
}
|
|
|
|
// Engine 更新执行器所需的最小容器运行时 API。
|
|
//
|
|
// 所有方法都通过 context 传递取消与超时控制;
|
|
// 各方法的具体行为由实现决定,详见 MobyEngine。
|
|
type Engine interface {
|
|
// Ping 探测引擎是否可达。
|
|
Ping(context.Context) error
|
|
// PullImage 从远端仓库拉取指定镜像。
|
|
PullImage(context.Context, string) error
|
|
// LoadImage 从归档读取流加载镜像。
|
|
LoadImage(context.Context, io.Reader) error
|
|
// InspectImage 检查镜像并返回其不可变信息。
|
|
InspectImage(context.Context, string) (Image, error)
|
|
// CreateContainer 依据规格创建容器并返回其状态。
|
|
CreateContainer(context.Context, ContainerSpec) (Container, error)
|
|
// StartContainer 启动指定容器。
|
|
StartContainer(context.Context, string) error
|
|
// ContainerLogs 读取指定容器的日志流。
|
|
ContainerLogs(context.Context, string) (io.ReadCloser, error)
|
|
// StopContainer 停止指定容器,timeoutSeconds 是发送停止信号后到强制终止前的等待秒数。
|
|
StopContainer(context.Context, string, int) error
|
|
// InspectContainer 检查容器并返回其运行时状态。
|
|
InspectContainer(context.Context, string) (Container, error)
|
|
// RemoveContainer 移除指定容器,force 决定是否强制移除。
|
|
RemoveContainer(context.Context, string, bool) error
|
|
// Close 释放引擎底层资源。
|
|
Close() error
|
|
}
|