95 lines
4.1 KiB
Go
95 lines
4.1 KiB
Go
package specs
|
|
|
|
// Spec is the base configuration for the container. It specifies platform
|
|
// independent configuration. This information must be included when the
|
|
// bundle is packaged for distribution.
|
|
type Spec struct {
|
|
// Version is the version of the specification that is supported.
|
|
Version string `json:"ociVersion"`
|
|
// 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,omitempty"`
|
|
// 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"`
|
|
// Annotations is an unstructured key value map that may be set by external tools to store and retrieve arbitrary metadata.
|
|
Annotations map[string]string `json:"annotations,omitempty"`
|
|
}
|
|
|
|
// Process contains information to start a specific application inside the container.
|
|
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,omitempty"`
|
|
// Cwd is the current working directory for the process and must be
|
|
// relative to the container's root.
|
|
Cwd string `json:"cwd"`
|
|
// Capabilities are linux capabilities that are kept for the container.
|
|
Capabilities []string `json:"capabilities,omitempty"`
|
|
// ApparmorProfile specified the apparmor profile for the container.
|
|
ApparmorProfile string `json:"apparmorProfile,omitempty"`
|
|
// SelinuxLabel specifies the selinux context that the container process is run as.
|
|
SelinuxLabel string `json:"selinuxLabel,omitempty"`
|
|
// NoNewPrivileges controls whether additional privileges could be gained by processes in the container.
|
|
NoNewPrivileges bool `json:"noNewPrivileges,omitempty"`
|
|
}
|
|
|
|
// Root contains information about the container's root filesystem on the host.
|
|
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"`
|
|
}
|
|
|
|
// Platform specifies OS and arch information for the host system that the container
|
|
// is created for.
|
|
type Platform struct {
|
|
// OS is the operating system.
|
|
OS string `json:"os"`
|
|
// Arch is the architecture
|
|
Arch string `json:"arch"`
|
|
}
|
|
|
|
// Mount specifies a mount for a container.
|
|
type Mount struct {
|
|
// Destination is the path where the mount will be placed relative to the container's root. The path and child directories MUST exist, a runtime MUST NOT create directories automatically to a mount point.
|
|
Destination string `json:"destination"`
|
|
// 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"`
|
|
// Options are fstab style mount options.
|
|
Options []string `json:"options,omitempty"`
|
|
}
|
|
|
|
// Hook specifies a command that is run at a particular event in the lifecycle of a container
|
|
type Hook struct {
|
|
Path string `json:"path"`
|
|
Args []string `json:"args,omitempty"`
|
|
Env []string `json:"env,omitempty"`
|
|
}
|
|
|
|
// Hooks for container setup and teardown
|
|
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,omitempty"`
|
|
// Poststart is a list of hooks to be run after the container process is started.
|
|
Poststart []Hook `json:"poststart,omitempty"`
|
|
// Poststop is a list of hooks to be run after the container process exits.
|
|
Poststop []Hook `json:"poststop,omitempty"`
|
|
}
|