Documentation ¶
Index ¶
- Constants
- type Action
- type Arg
- type BlockIO
- type CPU
- type Device
- type Hook
- type Hooks
- type HugepageLimit
- type IDMapping
- type InterfacePriority
- type Linux
- type LinuxSpec
- type Memory
- type Mount
- type Namespace
- type Network
- type Operator
- type Platform
- type Process
- type Resources
- type Rlimit
- type Root
- type Seccomp
- type Spec
- type Syscall
- type User
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 Arg ¶ added in v0.0.4
type Arg struct { Index uint `json:"index"` Value uint64 `json:"value"` ValueTwo uint64 `json:"valueTwo"` Op Operator `json:"op"` }
Arg used for matching specific syscall arguments in Seccomp
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 Device ¶ added in v0.0.4
type Device struct { // Device type, block, char, etc. Type rune `json:"type"` // Path to the device. Path string `json:"path"` // Major is the device's major number. Major int64 `json:"major"` // Minor is the device's minor number. Minor int64 `json:"minor"` // Cgroup permissions format, rwm. Permissions string `json:"permissions"` // FileMode permission bits for the device. FileMode os.FileMode `json:"fileMode"` // UID of the device. UID uint32 `json:"uid"` // Gid of the device. GID uint32 `json:"gid"` }
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 []Device `json:"devices"` // ApparmorProfile specified the apparmor profile for the container. ApparmorProfile string `json:"apparmorProfile"` // SelinuxProcessLabel specifies the selinux context that the container process is run as. SelinuxProcessLabel string `json:"selinuxProcessLabel"` // Seccomp specifies the seccomp security settings for the container. Seccomp Seccomp `json:"seccomp"` // 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 Operator ¶ added in v0.0.4
type Operator string
Operator used to match syscall arguments in Seccomp
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 Seccomp ¶ added in v0.0.4
type Seccomp struct { DefaultAction Action `json:"defaultAction"` Syscalls []*Syscall `json:"syscalls"` }
Seccomp represents syscall restrictions
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 Syscall ¶ added in v0.0.4
type Syscall struct { Name string `json:"name"` Action Action `json:"action"` Args []*Arg `json:"args"` }
Syscall is used to match a syscall in Seccomp
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