container

package
v1.5.28 Latest Latest
Warning

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

Go to latest
Published: Jun 8, 2025 License: GPL-3.0 Imports: 18 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Monitor added in v1.4.3

func Monitor(ctx context.Context, onRecord func(rec StatsRecord)) error

Monitor: теперь первым делом на "die" печатаем логи, а уже потом — ресурсы.

Types

type ContainerConfig

type ContainerConfig struct {
	Image string
	Cmd   []string
	Tty   bool
}

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 NewDockerManager

func NewDockerManager() (*DockerManager, error)

Docker manager constructor

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‐статистики, которые нам нужны.

Jump to

Keyboard shortcuts

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