Documentation
¶
Index ¶
- func Monitor(ctx context.Context, onRecord func(rec StatsRecord)) error
- type ContainerConfig
- type ContainerStatsSummary
- type DockerManager
- func (dm *DockerManager) Create(config ContainerConfig) (string, error)
- func (dm *DockerManager) EnsureImage(imageName string) error
- func (dm *DockerManager) GetLogs(containerID string) (string, error)
- func (dm *DockerManager) GetStats(containerID string) (string, error)
- func (dm *DockerManager) GetStatsOneShot(containerID string, startTime time.Time) (ContainerStatsSummary, error)
- func (dm *DockerManager) IsRunning(containerID string) (bool, error)
- func (dm *DockerManager) Ping() error
- func (dm *DockerManager) Remove(containerID string) error
- func (dm *DockerManager) Start(containerID string) error
- func (dm *DockerManager) Stop(containerID string, timeout int) error
- func (dm *DockerManager) StreamStats(containerID string) (io.ReadCloser, error)
- func (dm *DockerManager) Wait(containerID string) (container.WaitResponse, error)
- type Manager
- type StatsRecord
- type StatsResponse
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ContainerConfig ¶
ContainerConfig struct with Image, Cmd and Tty fields
type ContainerStatsSummary ¶ added in v1.3.2
type ContainerStatsSummary struct {
Duration time.Duration `json:"-"` // raw в наносекундах (не выводим)
DurationStr string `json:"Duration"` // человекочитаемый
// CPU мы теперь храним в nanoseconds (чтобы никогда не было нуля),
// а уже в JSON конвертируем его в проценты вручную
CPUUsageNs uint64 `json:"CPUUsageNs"`
CPUPercent float64 `json:"CPUPercent"`
// Память храним в байтах, а в JSON делим на 1024, чтобы вывести в kilobytes
MemUsage uint64 `json:"-"`
MemLimit uint64 `json:"-"`
MemUsageKB uint64 `json:"MemUsageKB"`
MemLimitKB uint64 `json:"MemLimitKB"`
MemPercent float64 `json:"MemPercent"`
}
type DockerManager ¶
type DockerManager struct {
// contains filtered or unexported fields
}
DockerManager struct with cli field
func (*DockerManager) Create ¶
func (dm *DockerManager) Create(config ContainerConfig) (string, error)
Function to create a container
func (*DockerManager) EnsureImage ¶ added in v1.2.0
func (dm *DockerManager) EnsureImage(imageName string) error
ensureImage checks if there is an image of the container if not it pulls it.
func (*DockerManager) GetLogs ¶
func (dm *DockerManager) GetLogs(containerID string) (string, error)
Function to get logs from a container
func (*DockerManager) GetStats ¶ added in v0.11.0
func (dm *DockerManager) GetStats(containerID string) (string, error)
Function to get stats from docker container and format them
func (*DockerManager) GetStatsOneShot ¶ added in v1.5.10
func (dm *DockerManager) GetStatsOneShot(containerID string, startTime time.Time) (ContainerStatsSummary, error)
func (*DockerManager) IsRunning ¶ added in v0.5.1
func (dm *DockerManager) IsRunning(containerID string) (bool, error)
Function to check if a container is running
func (*DockerManager) Ping ¶ added in v1.2.2
func (dm *DockerManager) Ping() error
func (*DockerManager) Remove ¶
func (dm *DockerManager) Remove(containerID string) error
Function to remove a container
func (*DockerManager) Start ¶
func (dm *DockerManager) Start(containerID string) error
Function to start a container
func (*DockerManager) Stop ¶
func (dm *DockerManager) Stop(containerID string, timeout int) error
Function to stop a container
func (*DockerManager) StreamStats ¶ added in v1.5.25
func (dm *DockerManager) StreamStats(containerID string) (io.ReadCloser, error)
func (*DockerManager) Wait ¶ added in v0.4.0
func (dm *DockerManager) Wait(containerID string) (container.WaitResponse, error)
Function to wait for a container
type Manager ¶
type Manager interface {
Create(config ContainerConfig) (string, error)
Start(id string) error
Stop(id string, timeout int) error
Remove(id string) error
GetLogs(id string) (string, error)
Wait(id string) (container.WaitResponse, error)
IsRunning(id string) (bool, error)
GetStats(containerID string) (string, error)
EnsureImage(image string) error
GetStatsOneShot(containerID string, startTime time.Time) (ContainerStatsSummary, error)
StreamStats(id string) (io.ReadCloser, error)
Ping() error
}
Manager interface with methods to manage containers
type StatsRecord ¶ added in v1.4.3
type StatsRecord struct {
ID string `json:"id"`
StartTime time.Time `json:"start_time"`
EndTime time.Time `json:"end_time"`
Duration time.Duration `json:"duration"`
CPUUsageNs uint64 `json:"cpu_usage_ns"`
MemUsageBytes uint64 `json:"mem_usage_bytes"`
MemMaxBytes uint64 `json:"mem_max_bytes"`
}
StatsRecord holds the final stats for one container run.
type StatsResponse ¶ added in v1.5.26
type StatsResponse struct {
CPUStats struct {
// TotalUsage — кумулятивные наносекунды CPU
CPUUsage struct {
TotalUsage uint64 `json:"total_usage"`
} `json:"cpu_usage"`
// SystemUsage — кумулятивные наносекунды всех ядер
SystemUsage uint64 `json:"system_cpu_usage"`
} `json:"cpu_stats"`
// PreCPUStats нужен, если ты захочешь рассчитывать %-ные изменения по docker-алгоритму
PreCPUStats struct {
CPUUsage struct {
TotalUsage uint64 `json:"total_usage"`
} `json:"cpu_usage"`
SystemUsage uint64 `json:"system_cpu_usage"`
} `json:"precpu_stats"`
MemoryStats struct {
Usage uint64 `json:"usage"`
Limit uint64 `json:"limit"`
} `json:"memory_stats"`
}
StatsResponse — минимальный набор полей из Docker‐статистики, которые нам нужны.