ctrd

package
v0.0.0-...-2812ca0 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2018 License: Apache-2.0 Imports: 41 Imported by: 0

README

ctrd

ctrd is a package to interact with containerd using containerd's exposed API. Pouch will vendor package containerd in repo containerd/containerd and alibaba/containerd.

difference between containerds

First, we should said alibaba/containerd is definitely forked from upstream project containerd/containerd.

containerd/containerd definitely has the code base of the other one. Then what is the usage of alibaba/containerd. We say it is BACK PORTING.

Every time releasing Pouch to launch a new version, we vendor containerd/containerd. Since upstream containerd/containerd keeps its own way to evolve, when a serious bug is fixed in the upstream and Pouch needs this for backporting only, it is not proper to vendor the latest container/containerd which contains too many changes. As a result, we come up with a way to backport severe bugfix in alibaba/containerd. Then when backporting, we vendor alibaba/containerd, otherwise we still take advantages of upstream containerd/containerd.

To check if the package we use is containerd/containerd or alibaba/containerd, we can refer to vendor.json.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewDefaultSpec

func NewDefaultSpec(ctx context.Context, id string) (*specs.Spec, error)

NewDefaultSpec new a template spec with default.

func SetImageProxy

func SetImageProxy(p string)

SetImageProxy sets value of image http proxy

Types

type APIClient

APIClient defines common methods of containerd api client

func NewClient

func NewClient(cfg Config) (APIClient, error)

NewClient connect to containerd.

type Client

type Client struct {
	Config
	// contains filtered or unexported fields
}

Client is the client side the daemon holds to communicate with containerd.

func (*Client) Close

func (c *Client) Close() error

Close closes the client.

func (*Client) ContainerPID

func (c *Client) ContainerPID(ctx context.Context, id string) (int, error)

ContainerPID returns the container's init process id.

func (*Client) ContainerPIDs

func (c *Client) ContainerPIDs(ctx context.Context, id string) ([]int, error)

ContainerPIDs returns the all processes's ids inside the container.

func (*Client) CreateContainer

func (c *Client) CreateContainer(ctx context.Context, container *Container) error

CreateContainer create container and start process.

func (*Client) CreateSnapshot

func (c *Client) CreateSnapshot(ctx context.Context, id, ref string) error

CreateSnapshot creates a active snapshot with image's name and id.

func (*Client) DestroyContainer

func (c *Client) DestroyContainer(ctx context.Context, id string, timeout int64) (*Message, error)

DestroyContainer kill container and delete it.

func (*Client) ExecContainer

func (c *Client) ExecContainer(ctx context.Context, process *Process) error

ExecContainer executes a process in container.

func (*Client) Get

func (c *Client) Get(ctx context.Context) (*WrapperClient, error)

Get will reture an available containerd grpc client, Or occurred an error

func (*Client) GetMounts

func (c *Client) GetMounts(ctx context.Context, id string) ([]mount.Mount, error)

GetMounts returns the mounts for the active snapshot transaction identified by key.

func (*Client) GetOciImage

func (c *Client) GetOciImage(ctx context.Context, ref string) (v1.Image, error)

GetOciImage returns the OCI Image.

func (*Client) GetSnapshot

func (c *Client) GetSnapshot(ctx context.Context, id string) (snapshots.Info, error)

GetSnapshot returns the snapshot's info by id.

func (*Client) ListImages

func (c *Client) ListImages(ctx context.Context, filter ...string) ([]types.ImageInfo, error)

ListImages lists all images.

func (*Client) PauseContainer

func (c *Client) PauseContainer(ctx context.Context, id string) error

PauseContainer pause container.

func (*Client) ProbeContainer

func (c *Client) ProbeContainer(ctx context.Context, id string, timeout time.Duration) *Message

ProbeContainer probe the container's status, if timeout <= 0, will block to receive message.

func (*Client) PullImage

func (c *Client) PullImage(ctx context.Context, ref string, authConfig *types.AuthConfig, stream *jsonstream.JSONStream) (types.ImageInfo, error)

PullImage downloads an image from the remote repository.

func (*Client) RecoverContainer

func (c *Client) RecoverContainer(ctx context.Context, id string, io *containerio.IO) error

RecoverContainer reload the container from metadata and watch it, if program be restarted.

func (*Client) RemoveImage

func (c *Client) RemoveImage(ctx context.Context, ref string) error

RemoveImage deletes an image.

func (*Client) RemoveSnapshot

func (c *Client) RemoveSnapshot(ctx context.Context, id string) error

RemoveSnapshot removes the snapshot by id.

func (*Client) ResizeContainer

func (c *Client) ResizeContainer(ctx context.Context, id string, opts types.ResizeOptions) error

ResizeContainer changes the size of the TTY of the init process running in the container to the given height and width.

func (*Client) SetExecExitHooks

func (c *Client) SetExecExitHooks(hooks ...func(string, *Message) error)

SetExecExitHooks specified the handlers of exec process exit.

func (*Client) SetExitHooks

func (c *Client) SetExitHooks(hooks ...func(string, *Message) error)

SetExitHooks specified the handlers of container exit.

func (*Client) UnpauseContainer

func (c *Client) UnpauseContainer(ctx context.Context, id string) error

UnpauseContainer unpauses a container.

func (*Client) UpdateResources

func (c *Client) UpdateResources(ctx context.Context, id string, resources types.Resources) error

UpdateResources updates the configurations of a container.

func (*Client) Version

func (c *Client) Version(ctx context.Context) (containerd.Version, error)

Version returns the version of containerd.

type Config

type Config struct {
	Address string
	// GrpcClientPoolCapacity is the capacity of grpc client pool.
	GrpcClientPoolCapacity int
	// MaxStreamsClient records the max number of concurrent streams
	MaxStreamsClient int
}

Config represents the config used to communicated with containerd.

type Container

type Container struct {
	ID      string
	Image   string
	Runtime string
	IO      *containerio.IO
	Spec    *specs.Spec
}

Container wraps container's info.

type ContainerAPIClient

type ContainerAPIClient interface {
	// CreateContainer creates a containerd container and start process.
	CreateContainer(ctx context.Context, container *Container) error
	// DestroyContainer kill container and delete it.
	DestroyContainer(ctx context.Context, id string, timeout int64) (*Message, error)
	// ProbeContainer probe the container's status, if timeout <= 0, will block to receive message.
	ProbeContainer(ctx context.Context, id string, timeout time.Duration) *Message
	// ContainerPIDs returns the all processes's ids inside the container.
	ContainerPIDs(ctx context.Context, id string) ([]int, error)
	// ContainerPID returns the container's init process id.
	ContainerPID(ctx context.Context, id string) (int, error)
	// ExecContainer executes a process in container.
	ExecContainer(ctx context.Context, process *Process) error
	// RecoverContainer reload the container from metadata and watch it, if program be restarted.
	RecoverContainer(ctx context.Context, id string, io *containerio.IO) error
	// PauseContainer pause container.
	PauseContainer(ctx context.Context, id string) error
	// UnpauseContainer unpauses a container.
	UnpauseContainer(ctx context.Context, id string) error
	// ResizeContainer changes the size of the TTY of the init process running
	// in the container to the given height and width.
	ResizeContainer(ctx context.Context, id string, opts types.ResizeOptions) error
	// UpdateResources updates the configurations of a container.
	UpdateResources(ctx context.Context, id string, resources types.Resources) error
	// SetExitHooks specified the handlers of container exit.
	SetExitHooks(hooks ...func(string, *Message) error)
	// SetExecExitHooks specified the handlers of exec process exit.
	SetExecExitHooks(hooks ...func(string, *Message) error)
}

ContainerAPIClient provides access to containerd container features.

type ImageAPIClient

type ImageAPIClient interface {
	// GetOciImage returns the OCI Image.
	GetOciImage(ctx context.Context, ref string) (v1.Image, error)
	// RemoveImage deletes an image.
	RemoveImage(ctx context.Context, ref string) error
	// ListImages lists all images.
	ListImages(ctx context.Context, filter ...string) ([]types.ImageInfo, error)
	// PullImage downloads an image from the remote repository.
	PullImage(ctx context.Context, ref string, authConfig *types.AuthConfig, stream *jsonstream.JSONStream) (types.ImageInfo, error)
}

ImageAPIClient provides access to containerd image features.

type Message

type Message struct {
	// contains filtered or unexported fields
}

Message is used to watch containerd.

func (*Message) ExitCode

func (m *Message) ExitCode() uint32

ExitCode returns the exit code in Message.

func (*Message) ExitTime

func (m *Message) ExitTime() time.Time

ExitTime returns the exit time in Message.

func (*Message) RawError

func (m *Message) RawError() error

RawError returns the error contained in Message.

type Process

type Process struct {
	ContainerID string
	ExecID      string
	IO          *containerio.IO
	P           *specs.Process
}

Process wraps exec process's info.

type ProgressInfo

type ProgressInfo struct {
	Ref       string
	Status    string
	Offset    int64
	Total     int64
	StartedAt time.Time
	UpdatedAt time.Time

	// For Error handling
	Code         int    // http response code
	ErrorMessage string // detail error information
}

ProgressInfo represents the status of downloading image.

type SnapshotAPIClient

type SnapshotAPIClient interface {
	// CreateSnapshot creates a active snapshot with image's name and id.
	CreateSnapshot(ctx context.Context, id, ref string) error
	// GetSnapshot returns the snapshot's info by id.
	GetSnapshot(ctx context.Context, id string) (snapshots.Info, error)
	// RemoveSnapshot removes the snapshot by id.
	RemoveSnapshot(ctx context.Context, id string) error
	// GetMounts returns the mounts for the active snapshot transaction identified
	// by key.
	GetMounts(ctx context.Context, id string) ([]mount.Mount, error)
}

SnapshotAPIClient provides access to containerd snapshot features

type WrapperClient

type WrapperClient struct {
	// contains filtered or unexported fields
}

WrapperClient wrappers containerd grpc client, so that pouch daemon can holds a grpc client pool to improve grpc client performance.

func (*WrapperClient) Consume

func (w *WrapperClient) Consume(v int) error

Consume is to acquire specified numbers of grpc stream client

func (*WrapperClient) Produce

func (w *WrapperClient) Produce(v int)

Produce is to release specified numbers of grpc stream client FIXME(ziren): if streamQuota greater than defaultMaxStreamsClient what to do ???

func (*WrapperClient) Value

func (w *WrapperClient) Value() int

Value is to get the quota

Jump to

Keyboard shortcuts

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