containers

package module
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Jun 4, 2023 License: MIT Imports: 13 Imported by: 0

README

containers

Documentation

Index

Constants

View Source
const (
	ErrContainerExitedBeforeReady = errors.Const("container exited before ready")
	ErrContainerAlreadyStoped     = errors.Const("container already stopped")
	ErrContainerDidntStart        = errors.Const("container did not start")
	StartTimeoutFactorEnvar       = "DEBUG_START_TIMEOUT_FACTOR"
)

Общие настройки контейнера

Variables

This section is empty.

Functions

func CheckImages

func CheckImages(cli Client, opts ...ImageOption) error

func SliceToSet

func SliceToSet(slice []string) map[string]struct{}

Types

type AddrsMap

type AddrsMap map[ports.PortName]string

AddrsMap - мапа адресов для разименования по портам

type BaseContainer

type BaseContainer struct {
	Ctx          context.Context
	Ready        ReadyFunc
	OutputStream io.Writer
	ErrorStream  io.Writer

	Name       string
	TypeID     uint8
	Image      string
	EntryPoint string

	ContainerIP string

	Cmd       []string
	Mounts    []string
	Envs      []string
	Volumes   []string
	Sysctls   map[string]string
	DebugPort ports.DebugPort
	Ports     PortBinds

	StartTimeout time.Duration
	Autoremove   bool
	NotBindPorts bool
	Background   bool

	ConfController envs.Controller
	// contains filtered or unexported fields
}

BaseContainer - базовый тип обертки над нативным docker container nolint:maligned

func NewBaseContainer

func NewBaseContainer(cli Client, nw Network, confCtl envs.Controller) *BaseContainer

NewBaseContainer - конструктор базового контейнера

func (*BaseContainer) ContainerAddrs

func (c *BaseContainer) ContainerAddrs() AddrsMap

ContainerAddrs возвращает список эндпоинтов контейнера

func (*BaseContainer) ContainerPorts

func (c *BaseContainer) ContainerPorts() []Port

func (*BaseContainer) CreateContainer

func (c *BaseContainer) CreateContainer() error

CreateContainer конфигурирует и создает контейнер

func (*BaseContainer) GetAutoremove

func (c *BaseContainer) GetAutoremove() bool

func (*BaseContainer) GetClient

func (c *BaseContainer) GetClient() Client

GetClient - возвращает клиента среды исполнения контейнера

func (*BaseContainer) GetCmd

func (c *BaseContainer) GetCmd() []string

func (*BaseContainer) GetContainerIP

func (c *BaseContainer) GetContainerIP() string

func (*BaseContainer) GetEntryPoint

func (c *BaseContainer) GetEntryPoint() string

func (*BaseContainer) GetEnvs

func (c *BaseContainer) GetEnvs() []string

func (*BaseContainer) GetID

func (c *BaseContainer) GetID() string

GetID - возвращает идентификатор запущенного контейнера после его создания

func (*BaseContainer) GetImage

func (c *BaseContainer) GetImage() string

func (*BaseContainer) GetMounts

func (c *BaseContainer) GetMounts() []string

func (*BaseContainer) GetName

func (c *BaseContainer) GetName() string

GetName - возвращает имя контейнера

func (*BaseContainer) GetNetwork

func (c *BaseContainer) GetNetwork() Network

func (*BaseContainer) GetSysctls

func (c *BaseContainer) GetSysctls() map[string]string

func (*BaseContainer) GetVolumes

func (c *BaseContainer) GetVolumes() []string

func (*BaseContainer) HostAddrs

func (c *BaseContainer) HostAddrs() AddrsMap

HostAddrs возвращает список эндпоинтов хоста

func (*BaseContainer) HostIP

func (c *BaseContainer) HostIP() string

HostIP - возвращает IP хоста ссети для текущего контейнера

func (*BaseContainer) HostPort

func (c *BaseContainer) HostPort(name ports.PortName) string

HostPort - возвращает фактический порт по имени порта

func (*BaseContainer) LogError

func (c *BaseContainer) LogError(err error, args ...any) bool

LogError пишет ошибку сообщение во writer потока стандартного вывода ошибок контейнера

func (*BaseContainer) LogStderr

func (c *BaseContainer) LogStderr(format string, args ...any) bool

LogStderr пишет сообщение во writer потока стандартного вывода ошибок контейнера

func (*BaseContainer) LogStdout

func (c *BaseContainer) LogStdout(format string, args ...any) bool

LogStdout пишет сообщение во writer потока стандартного вывода контейнера

func (*BaseContainer) PortMap

func (c *BaseContainer) PortMap() PortMap

func (*BaseContainer) StartContainer

func (c *BaseContainer) StartContainer(sigCh <-chan os.Signal, ready chan<- struct{}) error

StartContainer непосредственно запускает контейнер

func (*BaseContainer) Stop

func (c *BaseContainer) Stop() error

Stop останавливает контейнер

type Client

type Client interface {
	// WithStdout устанавливает кастомный поток стандартного вывода
	WithStdout(w io.Writer) Client
	// WithStderr устанавливает кастомный поток вывода ошибок
	WithStderr(w io.Writer) Client
	// IsInContainer - возвращает признак того что процесс сам запущен
	// внутри контейнера
	IsInContainer() bool
	// NetworkList возвращает список сетей
	NetworkList(ctx context.Context) ([]*net.IPNet, error)
	// NextSubnet возвращает адрес следующей незанятой подсети
	NextSubnet() (*net.IPNet, error)
	// RemoveNetwork удаляет пользовательскую сеть
	RemoveNetwork(id string) error
	// ContainerCreate создает контейнер
	ContainerCreate(ctx context.Context, data Container) (string, error)
	// ContainerStart запускает контейнер
	ContainerStart(ctx context.Context, id, name string) (*ContainerInfo, error)
	// ContainerWait ожидает завершения работы контейнера
	ContainerWait(ctx context.Context, id string) (<-chan ContainerStatus, <-chan error)
	// ContainerStop останавливает контейнер
	ContainerStop(ctx context.Context, id string, timeout time.Duration) error
	// StreamLogs подключает вывод логов контейнера
	StreamLogs(ctx context.Context, id string, stderr, stdout io.Writer, follow bool) error
	// FindImageLocal - осуществляет поиск образа в локальном сторе
	FindImageLocal(ctx context.Context, image string) (bool, error)
	// PullImage - скачивает образ в локальный стор
	PullImage(image string) error
	// RemoveImage - удаляет образ из локального стора
	RemoveImage(image string)
	// BuildImage - собирает образ
	BuildImage(data *ImageBuildData) error
	// CheckNetwork проверяет существование сети и создает
	// ее в случае отсутствия
	CheckNetwork(nw, cidr string) (Network, error)
}

Container - интерфейс работы с docker-контейнером

type Container

type Container interface {
	// GetClient - возвращает клиента среды исполнения контейнера
	GetClient() Client
	// GetID возвращает идентификатор запущенного контейнера после его создания
	GetID() string
	// GetName возвращает имя контейнера
	GetName() string
	// GetImage возвращает образ
	GetImage() string
	// GetSysctls возвращает данные системных настроек контейнера
	GetSysctls() map[string]string
	// GetContainerIP возвращает внутренний IP адрес контейнера
	GetContainerIP() string
	// ContainerPorts возвращает список внутренних портов контейнера
	ContainerPorts() []Port
	// PortMap возвращает смапленные на хост порты
	PortMap() PortMap
	// GetEnvs возвращает список переменных окружения
	GetEnvs() []string
	// GetEntryPoint возвращает точку схода процесса контейнера
	GetEntryPoint() string
	// GetCmd возвращает команду контейнера
	GetCmd() []string
	// GetVolumes возвращает список разделов
	GetVolumes() []string
	// GetMounts возвращает список подключаемых разделов
	GetMounts() []string
	// GetAutoremove признак авто удаления контейнера после завершения работы
	GetAutoremove() bool
	// GetNetwork возвращает сеть контейнера
	GetNetwork() Network
	// CreateContainer - фаза создания контейнера
	CreateContainer() error
	// StartContainer - фаза старта контейнера
	StartContainer(sigCh <-chan os.Signal, ready chan<- struct{}) error
	// Stop - останавливает контейнер
	Stop() error
	// HostAddrs - возвращает мапу адресов контейнера на хосте
	HostAddrs() AddrsMap
	// ContainerAddrs - возвращает мапу адресов контейнера
	ContainerAddrs() AddrsMap
	// LogStdout пишет сообщение во writer потока стандартного вывода контейнера
	LogStdout(format string, args ...any) bool
	// LogStderr пишет сообщение во writer потока стандартного вывода ошибок контейнера
	LogStderr(format string, args ...any) bool
	// LogError пишет ошибку сообщение во writer потока стандартного вывода ошибок контейнера
	LogError(err error, args ...any) bool
}

Container - интерфейс работы с docker-контейнером

type ContainerInfo

type ContainerInfo struct {
	ID        string
	IPAddress string
	PortBinds PortMap
	Networks  map[string]EndpointSettings
}

type ContainerStatus

type ContainerStatus struct {
	StatusCode int64
	Error      error
}

type EndpointSettings

type EndpointSettings struct {
	IPAddress string
}

type ImageBuildData

type ImageBuildData struct {
	Tags       []string
	Args       map[string]*string
	Root       string
	Dockerfile string
	Nocache    bool
	ClearRoot  bool
	Output     io.Writer
}

ImageBuildData - данные необходимые для сборки образа

type ImageBuildPreparer

type ImageBuildPreparer func() (*ImageBuildData, error)

ImageBuildPreparer - колбэк, подготавливающий данные для билдера

type ImageOption

type ImageOption func(o *ImageOptions)

ImageOption - опция действия при отсутствии указанного образа

func WithBuildImage

func WithBuildImage(preparer ImageBuildPreparer, forceBuild bool) ImageOption

WithBuildImage - опция сборки образа при его отсутствии

func WithPullImage

func WithPullImage(tag string) ImageOption

WithPullImage - опция скачивания образа при его отсутствии

type ImageOptions

type ImageOptions struct {
	Tags       []string
	Data       *ImageBuildData
	Err        error
	ForceBuild bool
	Pull       bool
}

ImageOptions опционал действий при отсутствии указанного докер образа

type Images

type Images map[string]ImageOption

Images пакет имен образов и опций их подготовки (скачивание, сборка, etc)

type Network

type Network interface {
	// ID возвращает идентификатор сети
	ID() string
	// Name возвращает имя сети
	Name() string
	// Gateway возвращает шлюз сети
	Gateway() string
	// HostIP возвращает адрес хоста
	HostIP() string
	// NextIP возвращает следующий не занятый IP-адрес сети
	NextIP() string
	// AddContainer добавляет данные контейнера
	AddContainer(info *OrchestratorInfo)
}

Container - интерфейс работы с docker-контейнером

type OrchestratorInfo

type OrchestratorInfo struct {
	ID                string   `json:"id"`
	TypeID            uint8    `json:"type_id"`
	ContainerEnpoints AddrsMap `json:"container_enpoints"`
	HostEnpoints      AddrsMap `json:"host_enpoints"`
}

OrchestratorInfo - информация о контейнере в представлении оркестратора

type Port

type Port string

func NewPort

func NewPort(port uint16, proto string) Port

func (Port) Port

func (p Port) Port() string

func (Port) Proto

func (p Port) Proto() string

type PortBind

type PortBind struct {
	Name      ports.PortName
	Container Port
	Host      uint16
}

type PortBinding

type PortBinding struct {
	HostIP   string
	HostPort string
}

type PortBinds

type PortBinds []PortBind

func (PortBinds) Names

func (pb PortBinds) Names() map[string]ports.PortName

Names - возвращает матрицу соответствия портов имени порта

type PortMap

type PortMap map[Port][]PortBinding

type ReadyFunc

type ReadyFunc func(ctx context.Context) <-chan struct{}

ReadyFunc - обработчик готовности контейнера

Directories

Path Synopsis
adapters

Jump to

Keyboard shortcuts

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