dockerclient

package
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2025 License: MIT Imports: 16 Imported by: 0

Documentation

Index

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

func (dc *DockerClient) GetNextReplicaIndex(ctx context.IContext, serviceName string) (int, error)

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 卷挂载结构体

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL