Documentation
¶
Index ¶
- type ContainerInfo
- type ContainerNameInfo
- type DockerClient
- func (dc *DockerClient) CompareServiceConfig(oldService, newService *Service) bool
- func (dc *DockerClient) CreateContainer(ctx context.IContext, service *Service, replicaIndex int) (string, error)
- func (dc *DockerClient) ExtractServiceFromContainer(container ContainerInfo) (*Service, error)
- func (dc *DockerClient) GetNextReplicaIndex(ctx context.IContext, serviceName string) (int, error)
- func (dc *DockerClient) InspectContainer(ctx context.IContext, containerID string) (*ContainerInfo, error)
- func (dc *DockerClient) ListContainers(ctx context.IContext) ([]ContainerInfo, error)
- func (dc *DockerClient) ParseContainerName(containerName string) (*ContainerNameInfo, error)
- func (dc *DockerClient) PullImage(ctx context.IContext, imageName, tag string) error
- func (dc *DockerClient) RemoveContainer(ctx context.IContext, containerID string) error
- func (dc *DockerClient) ScaleService(ctx context.IContext, serviceName string, targetReplicas int) error
- func (dc *DockerClient) StartContainer(ctx context.IContext, containerID string) error
- func (dc *DockerClient) StopContainer(ctx context.IContext, containerID string) error
- func (dc *DockerClient) UpdateContainer(ctx context.IContext, serviceName string, newService *Service, ...) (string, int, error)
- type PortMapping
- type Service
- type VolumeMount
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ContainerInfo ¶
type ContainerInfo struct {
ID string // 容器ID
Name string // 容器名称
Image string // 镜像名称
Status string // 容器状态
Ports []PortMapping // 端口映射
Labels map[string]string // 标签
State string // 运行状态
CreatedAt string // 创建时间
}
ContainerInfo 容器信息结构体
type ContainerNameInfo ¶
type ContainerNameInfo struct {
ServiceName string // 服务名称
PublicPort int // 公共端口(用户访问端口)
ContainerPort int // 容器端口(Docker映射端口)
ReplicaIndex int // 副本索引
}
ContainerNameInfo 容器名称解析结果
type DockerClient ¶
type DockerClient struct {
// contains filtered or unexported fields
}
DockerClient Docker客户端结构体
func NewDockerClient ¶
func NewDockerClient() (*DockerClient, error)
NewDockerClient 创建新的Docker客户端实例 参数:
- containerPrefix: 容器名称前缀,用于标识管理的容器
func (*DockerClient) CompareServiceConfig ¶
func (dc *DockerClient) CompareServiceConfig(oldService, newService *Service) bool
CompareServiceConfig 比较两个服务配置是否有差异 主要比较影响容器运行的关键参数:镜像、标签、环境变量、卷挂载、命令等
func (*DockerClient) CreateContainer ¶
func (dc *DockerClient) CreateContainer(ctx context.IContext, service *Service, replicaIndex int) (string, error)
CreateContainerWithReplica 创建带副本编号的容器 根据服务配置创建Docker容器,支持端口映射、环境变量、卷挂载等配置 参数:
- ctx: 上下文对象
- service: 服务配置信息
- replicaIndex: 副本编号,用于区分同一服务的不同实例
func (*DockerClient) ExtractServiceFromContainer ¶
func (dc *DockerClient) ExtractServiceFromContainer(container ContainerInfo) (*Service, error)
ExtractServiceFromContainer 从容器中提取Service配置 根据容器的标签和配置信息重建Service结构体
func (*DockerClient) GetNextReplicaIndex ¶
GetNextReplicaIndex 获取服务的下一个可用副本编号 通过扫描现有容器,找到指定服务的第一个未使用的副本编号 参数:
- ctx: 上下文对象
- serviceName: 服务名称
func (*DockerClient) InspectContainer ¶
func (dc *DockerClient) InspectContainer(ctx context.IContext, containerID string) (*ContainerInfo, error)
InspectContainer 检查指定容器的详细信息 返回容器的完整配置和状态信息 参数:
- ctx: 上下文对象
- containerID: 容器ID
func (*DockerClient) ListContainers ¶
func (dc *DockerClient) ListContainers(ctx context.IContext) ([]ContainerInfo, error)
ListContainers 列出所有管理的Docker容器 返回包含运行中和已停止的所有管理容器信息列表(自动过滤非管理容器) 参数:
- ctx: 上下文对象
func (*DockerClient) ParseContainerName ¶
func (dc *DockerClient) ParseContainerName(containerName string) (*ContainerNameInfo, error)
ParseContainerName 解析容器名称,提取服务信息 从标准格式的容器名称中解析出服务名、端口和副本信息
func (*DockerClient) PullImage ¶
func (dc *DockerClient) PullImage(ctx context.IContext, imageName, tag string) error
PullImage 拉取Docker镜像 参数:
- ctx: 上下文对象,用于控制超时和取消操作
- imageName: 镜像名称
- tag: 镜像标签
func (*DockerClient) RemoveContainer ¶
func (dc *DockerClient) RemoveContainer(ctx context.IContext, containerID string) error
RemoveContainer 删除指定的Docker容器 强制删除,即使容器正在运行 参数:
- ctx: 上下文对象
- containerID: 容器ID
func (*DockerClient) ScaleService ¶
func (dc *DockerClient) ScaleService(ctx context.IContext, serviceName string, targetReplicas int) error
ScaleService 缩放服务副本数量 简化的扩缩容接口,只需要服务名和目标副本数 参数:
- ctx: 上下文对象
- serviceName: 服务名称
- targetReplicas: 目标副本数量
func (*DockerClient) StartContainer ¶
func (dc *DockerClient) StartContainer(ctx context.IContext, containerID string) error
StartContainer 启动指定的Docker容器 参数:
- ctx: 上下文对象
- containerID: 容器ID
func (*DockerClient) StopContainer ¶
func (dc *DockerClient) StopContainer(ctx context.IContext, containerID string) error
StopContainer 停止指定的Docker容器 使用30秒超时进行优雅停止 参数:
- ctx: 上下文对象
- containerID: 容器ID
func (*DockerClient) UpdateContainer ¶
func (dc *DockerClient) UpdateContainer(ctx context.IContext, serviceName string, newService *Service, replicaIndex int) (string, int, error)
UpdateContainer 滚动更新容器 - 创建新容器替换旧容器 此方法实现零停机的滚动更新:创建新容器,启动成功后删除旧容器 参数:
- ctx: 上下文对象
- serviceName: 服务名称
- newService: 新的服务配置
- replicaIndex: 要更新的副本索引
type PortMapping ¶
type PortMapping struct {
HostPort string // 主机端口
ContainerPort string // 容器端口
Protocol string // 协议类型
}
PortMapping 端口映射信息结构体
type Service ¶
type Service struct {
Name string // 服务名称
Image string // Docker镜像名称
Tag string // 镜像标签
PublicPort int // 公共端口(用户访问端口)
InternalPort int // 容器内部端口
DockerPort int // Docker映射端口(动态分配)
Environment map[string]string // 环境变量
EnvFile string // 环境变量文件路径
Volumes []VolumeMount // 卷挂载配置
Entrypoint []string // 入口
Command []string // 启动命令
WorkingDir string // 工作目录
Replicas int // 副本数量
}
Service 服务配置结构体,用于Docker操作
type VolumeMount ¶
type VolumeMount struct {
Source string // 主机路径
Destination string // 容器内路径
ReadOnly bool // 是否只读挂载
}
VolumeMount 卷挂载结构体