Documentation ¶
Index ¶
- type Container
- type ContainerStatus
- type ContainerStatusBehavior
- type CreatedStatusBehavior
- type Factory
- type InitExecConfig
- type Initializer
- type InitializerExecImpl
- type InitializerStandardImpl
- type InitializerType
- type LinuxContainer
- func (c *LinuxContainer) Config() configs.ContainerConfig
- func (c *LinuxContainer) Create(process *Process) error
- func (c *LinuxContainer) Destroy() (err error)
- func (c *LinuxContainer) ID() string
- func (c *LinuxContainer) OCIState() (*specs.State, error)
- func (c *LinuxContainer) Run(process *Process) error
- func (c *LinuxContainer) Signal(s os.Signal) error
- func (c *LinuxContainer) Start() error
- func (c *LinuxContainer) State() (*StateStorage, error)
- func (c *LinuxContainer) Status() (ContainerStatus, error)
- type LinuxContainerFactory
- func (factory *LinuxContainerFactory) Create(id string, config *configs.ContainerConfig) (Container, error)
- func (factory *LinuxContainerFactory) Exists(id string) bool
- func (factory *LinuxContainerFactory) GetRuntimeRoot() string
- func (factory *LinuxContainerFactory) Load(id string) (Container, error)
- func (factory *LinuxContainerFactory) StartInitialization() error
- type ParentAbstractProcess
- type ParentNoChildProcess
- type ParentProcess
- type ParentProcessStartHook
- type Process
- type RunningStatusBehavior
- type StateStorage
- type StoppedStatusBehavior
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Container ¶
type Container interface { ID() string // errors: // ContainerNotExists - Container no longer exists, // Systemerror - System util. Status() (ContainerStatus, error) // errors: // SystemError - System util. State() (*StateStorage, error) // errors: // SystemError - System util. OCIState() (*specs.State, error) // Returns the current configs of the container. Config() configs.ContainerConfig // 创建但不运行cmd // errors: // ContainerNotExists - Container no longer exists, // ConfigInvalid - configs is invalid, // ContainerPaused - Container is paused, // SystemError - System util. Create(process *Process) (err error) // Create + Start // errors: // ContainerNotExists - Container no longer exists, // ConfigInvalid - configs is invalid, // ContainerPaused - Container is paused, // SystemError - System util. Run(process *Process) (err error) // 删除容器,如果容器还处于created,则杀掉容器进程 // errors: // ContainerNotStopped - Container is still running, // ContainerPaused - Container is paused, // SystemError - System util. Destroy() error // 向容器init进程发送信号 // errors: // SystemError - System util. Signal(s os.Signal) error // 让容器执行最终命令 // errors: // SystemError - System util. Start() error }
Container is a container object. Each container is thread-safe within the same config. Since a container can be destroyed by a separate config, any function may return that the container was not found.
type ContainerStatus ¶
type ContainerStatus int
ContainerStatus is the status of a container.
const ( // Created is the status that denotes the container exists but has not been run yet. Created ContainerStatus = iota // Running is the status that denotes the container exists and is running. Running // Stopped is the status that denotes the container does not have a created or running config. Stopped )
func (ContainerStatus) String ¶
func (s ContainerStatus) String() string
type ContainerStatusBehavior ¶
type ContainerStatusBehavior interface {
// contains filtered or unexported methods
}
func NewContainerStatusBehavior ¶
func NewContainerStatusBehavior(status ContainerStatus, c *LinuxContainer) (ContainerStatusBehavior, error)
type CreatedStatusBehavior ¶
type CreatedStatusBehavior struct {
// contains filtered or unexported fields
}
****************************************************************************************** 【CreatedStatusBehavior】 ******************************************************************************************
type Factory ¶
type InitExecConfig ¶
type InitExecConfig struct { ContainerConfig configs.ContainerConfig `json:"container_config"` ProcessConfig Process `json:"process_config"` ID string `json:"id"` }
type Initializer ¶
type Initializer interface {
Init() error
}
func NewInitializer ¶
func NewInitializer(initializerType InitializerType, config *InitExecConfig, configPipe *os.File, runtimeRoot string) (Initializer, error)
type InitializerExecImpl ¶
type InitializerExecImpl struct {
// contains filtered or unexported fields
}
func (*InitializerExecImpl) Init ¶
func (initializer *InitializerExecImpl) Init() error
type InitializerStandardImpl ¶
type InitializerStandardImpl struct {
// contains filtered or unexported fields
}
func (*InitializerStandardImpl) Init ¶
func (initializer *InitializerStandardImpl) Init() (err error)
容器初始化
func (*InitializerStandardImpl) SetRootfsReadOnlyIfSpecified ¶
func (initializer *InitializerStandardImpl) SetRootfsReadOnlyIfSpecified() error
type InitializerType ¶
type InitializerType string
const ( ExecInitializer InitializerType = "exec" InitInitializer InitializerType = "init" )
type LinuxContainer ¶
type LinuxContainer struct {
// contains filtered or unexported fields
}
func (*LinuxContainer) Config ¶
func (c *LinuxContainer) Config() configs.ContainerConfig
func (*LinuxContainer) Create ¶
func (c *LinuxContainer) Create(process *Process) error
Create并不会运行cmd 会让init process阻塞在cmd之前的
func (*LinuxContainer) Destroy ¶
func (c *LinuxContainer) Destroy() (err error)
func (*LinuxContainer) ID ¶
func (c *LinuxContainer) ID() string
func (*LinuxContainer) OCIState ¶
func (c *LinuxContainer) OCIState() (*specs.State, error)
func (*LinuxContainer) Run ¶
func (c *LinuxContainer) Run(process *Process) error
CreateAndStart 如果是exec(即不是init cmd),则在start中就会执行cmd,不需要exec再通知
func (*LinuxContainer) State ¶
func (c *LinuxContainer) State() (*StateStorage, error)
func (*LinuxContainer) Status ¶
func (c *LinuxContainer) Status() (ContainerStatus, error)
type LinuxContainerFactory ¶
type LinuxContainerFactory struct {
// contains filtered or unexported fields
}
func (*LinuxContainerFactory) Create ¶
func (factory *LinuxContainerFactory) Create(id string, config *configs.ContainerConfig) (Container, error)
func (*LinuxContainerFactory) Exists ¶
func (factory *LinuxContainerFactory) Exists(id string) bool
func (*LinuxContainerFactory) GetRuntimeRoot ¶
func (factory *LinuxContainerFactory) GetRuntimeRoot() string
func (*LinuxContainerFactory) Load ¶
func (factory *LinuxContainerFactory) Load(id string) (Container, error)
func (*LinuxContainerFactory) StartInitialization ¶
func (factory *LinuxContainerFactory) StartInitialization() error
type ParentAbstractProcess ¶
type ParentAbstractProcess struct {
// contains filtered or unexported fields
}
type ParentNoChildProcess ¶
type ParentNoChildProcess struct {
// contains filtered or unexported fields
}
ParentProcess接口的实现类,no child意味着我们现在启动的进程并不是容器init process的父进程,但仍是init process的代理
type ParentProcess ¶
type ParentProcess interface {
// contains filtered or unexported methods
}
func NewParentNoChildProcess ¶
func NewParentNoChildProcess(initProcessPid int, initProcessStartTime uint64, c *LinuxContainer) ParentProcess
type ParentProcessStartHook ¶
type ParentProcessStartHook func(*ParentAbstractProcess) error
type Process ¶
type Process struct { // The command to be run followed by any arguments. Args []string // Env specifies the environment variables for the config. Env []string // Cwd will change the processes current working directory inside the container's rootfs. Cwd string // Init specifies whether the config is the first config in the container. Init bool // Detach specifies the container is running frontend or backend Detach bool // if init = true, ID is container id, or ID is exec id. ID string }
type RunningStatusBehavior ¶
type RunningStatusBehavior struct {
// contains filtered or unexported fields
}
****************************************************************************************** 【RunningStatusBehavior】 represents a container that is currently running. ******************************************************************************************
type StateStorage ¶
type StateStorage struct { // ID is the container ID. ID string `json:"id"` // InitProcessPid is the init process id in the parent namespace. InitProcessPid int `json:"init_process_pid"` // InitProcessStartTime is the init process create time in clock cycles since boot time. InitProcessStartTime uint64 `json:"init_process_start_time"` // Created is the unix timestamp for the creation time of the container in UTC Created time.Time `json:"create_time"` // ContainerConfig is the container's configuration. Config configs.ContainerConfig `json:"config"` // Path to all the cgroups setup for a container. Key is cgroup subsystem name // with the value as the path. CgroupPaths map[string]string `json:"cgroup_paths"` // NamespacePaths are filepaths to the container's namespacePathMap. Key is the namespace type // with the value as the path. NamespacePaths map[configs.NamespaceType]string `json:"namespace_paths"` // Endpoint is container veth Endpoint *network.Endpoint `json:"endpoint"` }
StateStorage represents a running container's state
type StoppedStatusBehavior ¶
type StoppedStatusBehavior struct {
// contains filtered or unexported fields
}
****************************************************************************************** 【StoppedStatusBehavior】 represents a container is a stopped/destroyed state. ******************************************************************************************
Source Files ¶
- container.go
- container_impl.go
- container_impl_operations.go
- factory.go
- factory_impl.go
- initializer.go
- initializer_exec_impl.go
- initializer_standard_impl.go
- parent_process.go
- parent_process_abstract_impl.go
- parent_process_exec_impl.go
- parent_process_init_impl.go
- parent_process_nochild_impl.go
- process.go
- state_storage.go
- status.go
- status_behavior.go
- status_behavior_created.go
- status_behavior_running.go
- status_behavior_stopped.go