package container

import "github.com/docker/docker/container"

Index

Functions

func AttachStreams

func AttachStreams(ctx context.Context, streamConfig *runconfig.StreamConfig, openStdin, stdinOnce, tty bool, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer, keys []byte) chan error

AttachStreams connects streams to a TTY. Used by exec too. Should this move somewhere else?

func GetSandboxPortMapInfo

func GetSandboxPortMapInfo(sb libnetwork.Sandbox) nat.PortMap

GetSandboxPortMapInfo retrieves the current port-mapping programmed for the given sandbox

func IsValidStateString

func IsValidStateString(s string) bool

IsValidStateString checks if the provided string is a valid container state or not.

Types

type CommonContainer

type CommonContainer struct {
	*runconfig.StreamConfig
	// embed for Container to support states directly.
	*State          `json:"State"` // Needed for remote api version <= 1.11
	Root            string         `json:"-"` // Path to the "home" of the container, including metadata.
	BaseFS          string         `json:"-"` // Path to the graphdriver mountpoint
	RWLayer         layer.RWLayer  `json:"-"`
	ID              string
	Created         time.Time
	Managed         bool
	Path            string
	Args            []string
	Config          *containertypes.Config
	ImageID         image.ID `json:"Image"`
	NetworkSettings *network.Settings
	LogPath         string
	Name            string
	Driver          string
	// MountLabel contains the options for the 'mount' command
	MountLabel             string
	ProcessLabel           string
	RestartCount           int
	HasBeenStartedBefore   bool
	HasBeenManuallyStopped bool // used for unless-stopped restart policy
	MountPoints            map[string]*volume.MountPoint
	HostConfig             *containertypes.HostConfig `json:"-"` // do not serialize the host config in the json, otherwise we'll make the container unportable
	ExecCommands           *exec.Store                `json:"-"`
	// logDriver for closing
	LogDriver logger.Logger  `json:"-"`
	LogCopier *logger.Copier `json:"-"`
	// contains filtered or unexported fields
}

CommonContainer holds the fields for a container which are applicable across all platforms supported by the daemon.

type DetachError

type DetachError struct{}

DetachError is special error which returned in case of container detach.

func (DetachError) Error

func (DetachError) Error() string

type Health

type Health struct {
	types.Health
	// contains filtered or unexported fields
}

Health holds the current container health-check state

func (*Health) CloseMonitorChannel

func (s *Health) CloseMonitorChannel()

CloseMonitorChannel closes any existing monitor channel.

func (*Health) OpenMonitorChannel

func (s *Health) OpenMonitorChannel() chan struct{}

OpenMonitorChannel creates and returns a new monitor channel. If there already is one, it returns nil.

func (*Health) String

func (s *Health) String() string

String returns a human-readable description of the health-check state

type History

type History []*Container

History is a convenience type for storing a list of containers, sorted by creation date in descendant order.

func (*History) Len

func (history *History) Len() int

Len returns the number of containers in the history.

func (*History) Less

func (history *History) Less(i, j int) bool

Less compares two containers and returns true if the second one was created before the first one.

func (*History) Swap

func (history *History) Swap(i, j int)

Swap switches containers i and j positions in the history.

type Mount

type Mount struct {
	Source      string `json:"source"`
	Destination string `json:"destination"`
	Writable    bool   `json:"writable"`
	Data        string `json:"data"`
	Propagation string `json:"mountpropagation"`
}

Mount contains information for a mount operation.

type State

type State struct {
	sync.Mutex
	// FIXME: Why do we have both paused and running if a
	// container cannot be paused and running at the same time?
	Running           bool
	Paused            bool
	Restarting        bool
	OOMKilled         bool
	RemovalInProgress bool // Not need for this to be persistent on disk.
	Dead              bool
	Pid               int

	StartedAt  time.Time
	FinishedAt time.Time

	Health *Health
	// contains filtered or unexported fields
}

State holds the current container state, and has methods to get and set the state. Container has an embed, which allows all of the functions defined against State to run against Container.

func NewState

func NewState() *State

NewState creates a default state object with a fresh channel for state changes.

func (*State) Error

func (s *State) Error() string

Error returns current error for the state.

func (*State) ExitCode

func (s *State) ExitCode() int

ExitCode returns current exitcode for the state. Take lock before if state may be shared.

func (*State) GetPID

func (s *State) GetPID() int

GetPID holds the process id of a container.

func (*State) IsPaused

func (s *State) IsPaused() bool

IsPaused returns whether the container is paused or not.

func (*State) IsRestarting

func (s *State) IsRestarting() bool

IsRestarting returns whether the container is restarting or not.

func (*State) IsRunning

func (s *State) IsRunning() bool

IsRunning returns whether the running flag is set. Used by Container to check whether a container is running.

func (*State) ResetRemovalInProgress

func (s *State) ResetRemovalInProgress()

ResetRemovalInProgress makes the RemovalInProgress state to false.

func (*State) SetDead

func (s *State) SetDead()

SetDead sets the container state to "dead"

func (*State) SetError

func (s *State) SetError(err error)

SetError sets the container's error state. This is useful when we want to know the error that occurred when container transits to another state when inspecting it

func (*State) SetExitCode

func (s *State) SetExitCode(ec int)

SetExitCode sets current exitcode for the state. Take lock before if state may be shared.

func (*State) SetRemovalInProgress

func (s *State) SetRemovalInProgress() bool

SetRemovalInProgress sets the container state as being removed. It returns true if the container was already in that state.

func (*State) SetRestarting

func (s *State) SetRestarting(exitStatus *ExitStatus)

SetRestarting sets the container state to "restarting". It also sets the container PID to 0.

func (*State) SetRestartingLocking

func (s *State) SetRestartingLocking(exitStatus *ExitStatus)

SetRestartingLocking is when docker handles the auto restart of containers when they are in the middle of a stop and being restarted again

func (*State) SetRunning

func (s *State) SetRunning(pid int, initial bool)

SetRunning sets the state of the container to "running".

func (*State) SetStopped

func (s *State) SetStopped(exitStatus *ExitStatus)

SetStopped sets the container state to "stopped" without locking.

func (*State) SetStoppedLocking

func (s *State) SetStoppedLocking(exitStatus *ExitStatus)

SetStoppedLocking locks the container state and sets it to "stopped".

func (*State) StateString

func (s *State) StateString() string

StateString returns a single string to describe state

func (*State) String

func (s *State) String() string

String returns a human-readable description of the state

func (*State) WaitStop

func (s *State) WaitStop(timeout time.Duration) (int, error)

WaitStop waits until state is stopped. If state already stopped it returns immediately. If you want wait forever you must supply negative timeout. Returns exit code, that was passed to SetStoppedLocking

func (*State) WaitWithContext

func (s *State) WaitWithContext(ctx context.Context) error

WaitWithContext waits for the container to stop. Optional context can be passed for canceling the request.

type Store

type Store interface {
	// Add appends a new container to the store.
	Add(string, *Container)
	// Get returns a container from the store by the identifier it was stored with.
	Get(string) *Container
	// Delete removes a container from the store by the identifier it was stored with.
	Delete(string)
	// List returns a list of containers from the store.
	List() []*Container
	// Size returns the number of containers in the store.
	Size() int
	// First returns the first container found in the store by a given filter.
	First(StoreFilter) *Container
	// ApplyAll calls the reducer function with every container in the store.
	ApplyAll(StoreReducer)
}

Store defines an interface that any container store must implement.

func NewMemoryStore

func NewMemoryStore() Store

NewMemoryStore initializes a new memory store.

type StoreFilter

type StoreFilter func(*Container) bool

StoreFilter defines a function to filter container in the store.

type StoreReducer

type StoreReducer func(*Container)

StoreReducer defines a function to manipulate containers in the store

Source Files

archive.go container.go health.go history.go memory_store.go monitor.go mounts_unix.go state.go store.go

Version
v1.12.3
Published
Oct 26, 2016
Platform
js/wasm
Imports
41 packages
Last checked
4 seconds ago

Tools for package owners.