Documentation
¶
Index ¶
Constants ¶
const Version = "pre-draft"
Version is the specification version that the package types support.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BlockIO ¶
type BlockIO struct { // Specifies per cgroup weight, range is from 10 to 1000 Weight int64 `json:"blkioWeight"` // Weight per cgroup per device, can override BlkioWeight WeightDevice string `json:"blkioWeightDevice"` // IO read rate limit per cgroup per device, bytes per second ThrottleReadBpsDevice string `json:"blkioThrottleReadBpsDevice"` // IO write rate limit per cgroup per divice, bytes per second ThrottleWriteBpsDevice string `json:"blkioThrottleWriteBpsDevice"` // IO read rate limit per cgroup per device, IO per second ThrottleReadIOpsDevice string `json:"blkioThrottleReadIopsDevice"` // IO write rate limit per cgroup per device, IO per second ThrottleWriteIOpsDevice string `json:"blkioThrottleWriteIopsDevice"` }
BlockIO for Linux cgroup 'blockio' resource management
type CPU ¶
type CPU struct { int64 `json:"shares"` // CPU hardcap limit (in usecs). Allowed cpu time in a given period Quota int64 `json:"quota"` // CPU period to be used for hardcapping (in usecs). 0 to use system default Period int64 `json:"period"` // How many time CPU will use in realtime scheduling (in usecs) RealtimeRuntime int64 `json:"realtimeRuntime"` // CPU period to be used for realtime scheduling (in usecs) RealtimePeriod int64 `json:"realtimePeriod"` // CPU to use within the cpuset Cpus string `json:"cpus"` // MEM to use within the cpuset Mems string `json:"mems"` }Shares
CPU for Linux cgroup 'cpu' resource management
type Hook ¶ added in v0.0.3
type Hook struct { Path string `json:"path"` Args []string `json:"args"` Env []string `json:"env"` }
Hook specifies a command that is run at a particular event in the lifecycle of a container.
type Hooks ¶ added in v0.0.3
type Hooks struct { // Prestart is a list of hooks to be run before the container process is executed. // On Linux, they are run after the container namespaces are created. Prestart []Hook `json:"prestart"` // Poststop is a list of hooks to be run after the container process exits. Poststop []Hook `json:"poststop"` }
type HugepageLimit ¶
HugepageLimit structure corresponds to limiting kernel hugepages
type IDMapping ¶
type IDMapping struct { // HostID is the UID/GID of the host user or group HostID int32 `json:"hostID"` // ContainerID is the UID/GID of the container's user or group ContainerID int32 `json:"containerID"` // Size is the length of the range of IDs mapped between the two namespaces Size int32 `json:"size"` }
IDMapping specifies UID/GID mappings
type InterfacePriority ¶
type InterfacePriority struct { // Name is the name of the network interface Name string `json:"name"` // Priority for the interface Priority int64 `json:"priority"` }
InterfacePriority for network interfaces
type Linux ¶
type Linux struct { // UIDMapping specifies user mappings for supporting user namespaces on Linux UIDMappings []IDMapping `json:"uidMappings"` // GIDMapping specifies group mappings for supporting user namespaces on Linux GIDMappings []IDMapping `json:"gidMappings"` // Rlimits specifies rlimit options to apply to the container's process Rlimits []Rlimit `json:"rlimits"` // Sysctl are a set of key value pairs that are set for the container on start Sysctl map[string]string `json:"sysctl"` // Resources contain cgroup information for handling resource constraints // for the container Resources Resources `json:"resources"` // Namespaces contains the namespaces that are created and/or joined by the container Namespaces []Namespace `json:"namespaces"` // Capabilities are Linux capabilities that are kept for the container Capabilities []string `json:"capabilities"` // Devices are a list of device nodes that are created and enabled for the container Devices []string `json:"devices"` // RootfsPropagation is the rootfs mount propagation mode for the container RootfsPropagation string `json:"rootfsPropagation"` }
Linux contains platform specific configuration for Linux based containers
type LinuxSpec ¶
type LinuxSpec struct { Spec // Linux is platform specific configuration for Linux based containers Linux Linux `json:"linux"` }
LinuxSpec is the full specification for Linux containers
type Memory ¶
type Memory struct { // Memory limit (in bytes) Limit int64 `json:"limit"` // Memory reservation or soft_limit (in bytes) Reservation int64 `json:"reservation"` // Total memory usage (memory + swap); set `-1' to disable swap Swap int64 `json:"swap"` // Kernel memory limit (in bytes) Kernel int64 `json:"kernel"` // How aggressive the kernel will swap memory pages. Range from 0 to 100. Set -1 to use system default Swappiness int64 `json:"swappiness"` }
Memory for Linux cgroup 'memory' resource management
type Mount ¶
type Mount struct { // Type specifies the mount kind. Type string `json:"type"` // Source specifies the source path of the mount. In the case of bind mounts on // linux based systems this would be the file on the host. Source string `json:"source"` // Destination is the path where the mount will be placed relative to the container's root. Destination string `json:"destination"` // Options are fstab style mount options. Options string `json:"options"` }
Mount specifies a mount for a container.
type Namespace ¶
type Namespace struct { // Type is the type of Linux namespace Type string `json:"type"` // Path is a path to an existing namespace persisted on disk that can be joined // and is of the same type Path string `json:"path"` }
Namespace is the configuration for a Linux namespace
type Network ¶
type Network struct { // Set class identifier for container's network packets ClassID string `json:"classId"` // Set priority of network traffic for container Priorities []InterfacePriority `json:"priorities"` }
Network identification and priority configuration
type Platform ¶
type Platform struct { // OS is the operating system. OS string `json:"os"` // Arch is the architecture Arch string `json:"arch"` }
Platform specifies OS and arch information for the host system that the container is created for.
type Process ¶
type Process struct { // Terminal creates an interactive terminal for the container. Terminal bool `json:"terminal"` // User specifies user information for the process. User User `json:"user"` // Args specifies the binary and arguments for the application to execute. Args []string `json:"args"` // Env populates the process environment for the process. Env []string `json:"env"` // Cwd is the current working directory for the process and must be // relative to the container's root. Cwd string `json:"cwd"` }
Process contains information to start a specific application inside the container.
type Resources ¶
type Resources struct { // DisableOOMKiller disables the OOM killer for out of memory conditions DisableOOMKiller bool `json:"disableOOMKiller"` // Memory restriction configuration Memory Memory `json:"memory"` // CPU resource restriction configuration CPU CPU `json:"cpu"` // BlockIO restriction configuration BlockIO BlockIO `json:"blockIO"` // Hugetlb limit (in bytes) HugepageLimits []HugepageLimit `json:"hugepageLimits"` // Network restriction configuration Network Network `json:"network"` }
Resources has container runtime resource constraints
type Rlimit ¶
type Rlimit struct { // Type of the rlimit to set Type int `json:"type"` // Hard is the hard limit for the specified type Hard uint64 `json:"hard"` // Soft is the soft limit for the specified type Soft uint64 `json:"soft"` }
Rlimit type and restrictions
type Root ¶
type Root struct { // Path is the absolute path to the container's root filesystem. Path string `json:"path"` // Readonly makes the root filesystem for the container readonly before the process is executed. Readonly bool `json:"readonly"` }
Root contains information about the container's root filesystem on the host.
type Spec ¶
type Spec struct { // Version is the version of the specification that is supported. Version string `json:"version"` // Platform is the host information for OS and Arch. Platform Platform `json:"platform"` // Process is the container's main process. Process Process `json:"process"` // Root is the root information for the container's filesystem. Root Root `json:"root"` // Hostname is the container's host name. Hostname string `json:"hostname"` // Mounts profile configuration for adding mounts to the container's filesystem. Mounts []Mount `json:"mounts"` // Hooks are the commands run at various lifecycle events of the container. Hooks Hooks `json:"hooks"` }
Spec is the base configuration for the container. It specifies platform independent configuration.
type User ¶
type User struct { // Uid is the user id UID int32 `json:"uid"` // Gid is the group id GID int32 `json:"gid"` // AdditionalGids are additional group ids set for the container's process AdditionalGids []int32 `json:"additionalGids"` }
User specifies Linux specific user and group information for the container's main process