runc(8)
๐ runc โ bestie's guide to the Open Container Initiative runtime ๐
okay so this is the runc(8) page from the System Manager's Manual, and honestly? it's giving main character energy. let's get into it ๐ซถ
โจ NAME โจ
runc โ the Open Container Initiative runtime ๐
โจ SYNOPSIS โจ
runc [global-option ...] command [command-option ...] [argument ...]
โจ DESCRIPTION โจ
so runc is a command line client for running applications that are packaged according to the Open Container Initiative (OCI) format, and it's a compliant implementation of the Open Container Initiative specification. yes bestie, it actually follows the spec, no cap ๐
runc integrates so well with your existing process supervisors โ like, it just fits right in โ and it gives you a production container runtime environment for your apps. you can use it with whatever process monitoring tools you already have, and the container will be spawned as a direct child of the process supervisor. iconic behaviour fr fr ๐
containers get configured using bundles. a bundle for a container is a directory that includes:
- a specification file named
config.json - a root filesystem
and that root filesystem contains the contents of the container. periodt.
to run a new instance of a container:
# runc run [ -b bundle ] container-id
where container-id is your name for the instance of the container you're starting. and heads up: the name you give the container instance must be unique on your host. no duplicates allowed, that's the vibe check ๐ซ
providing the bundle directory using -b is optional โ the default value for bundle is the current directory. easy peasy ๐
โจ COMMANDS โจ
checkpointโ Checkpoint a running container. Seerunc-checkpoint(8).createโ Create a container. Seerunc-create(8).deleteโ Delete any resources held by the container; often used with detached containers. Seerunc-delete(8).eventsโ Display container events, such as OOM notifications, CPU, memory, I/O and network statistics. Seerunc-events(8).execโ Execute a new process inside the container. Seerunc-exec(8).killโ Send a specified signal to the container's init process. Seerunc-kill(8).listโ List containers started byruncwith the given--root. Seerunc-list(8).pauseโ Suspend all processes inside the container. Seerunc-pause(8).psโ Show processes running inside the container. Seerunc-ps(8).restoreโ Restore a container from a previous checkpoint. Seerunc-restore(8).resumeโ Resume all processes that have been previously paused. Seerunc-resume(8).runโ Create and start a container. Seerunc-run(8).specโ Create a new specification file (config.json). Seerunc-spec(8).startโ Start a container previously created byrunc create. Seerunc-start(8).stateโ Show the container state. Seerunc-state(8).updateโ Update container resource constraints. Seerunc-update(8).help,hโ Show a list of commands or help for a particular command.
โจ GLOBAL OPTIONS โจ
okay so these options work with any command, but listen โ they must precede the command. order matters, bestie ๐ค
--debugโ Enable debug logging.--logpath โ Set the log destination to path. The default is to log tostderr.--log-formattext|json โ Set the log format (default istext).--rootpath โ Set the root directory to store containers' state. The path should be located ontmpfs. Default is/run/runc, or$XDG_RUNTIME_DIR/runcfor rootless containers.--systemd-cgroupโ Enable systemd cgroup support. If this is set, the container spec (config.json) is expected to havecgroupsPathvalue in theslice:prefix:nameform (e.g.system.slice:runc:434234).--rootlesstrue|false|auto โ Enable or disable rootless mode. Default isauto, meaning to auto-detect whether rootless should be enabled.--help|-hโ Show help.--version|-vโ Show version.
โจ SEE ALSO โจ
runc-checkpoint(8), runc-create(8), runc-delete(8), runc-events(8), runc-exec(8), runc-kill(8), runc-list(8), runc-pause(8), runc-ps(8), runc-restore(8), runc-resume(8), runc-run(8), runc-spec(8), runc-start(8), runc-state(8), runc-update(8). ๐ฆ
and that's the whole page bestie!! the source line at the bottom just reads runc(8) โ that's the source/version-and-date footer, no extra version digits or date hiding in there, so this is literally the entire thing, start to finish ๐โจ go run some containers, you absolute legend ๐ธ๐
๐ฆ where this page comes from
- alpine 3.24: runc-doc 1.4.3-r2 ยท Apache-2.0
- arch rolling: runc 1.5.2-1 ยท Apache
- fedora 43: runc 2:1.3.1-1.fc43 ยท Apache-2.0 and BSD-2-Clause and BSD-3-Clause and MIT
- fedora 43: runc 2:1.5.2-3.fc43 ยท Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT AND MPL-2.0
- fedora 44: runc 2:1.4.1-1.fc44 ยท Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT AND MPL-2.0
- fedora 44: runc 2:1.5.2-3.fc44 ยท Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT AND MPL-2.0
- nixpkgs unstable: runc 1.5.2
- ubuntu resolute: runc 1.4.0-0ubuntu1 ยท Apache-2.0
- ubuntu resolute: runc-stable 1.3.4-0ubuntu1 ยท Apache-2.0
- ubuntu stonking: runc 1.5.1-0ubuntu2 ยท Apache-2.0
- ubuntu stonking: runc-stable 1.5.1-0ubuntu2 ยท Apache-2.0
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms