Containers¶
A container runtime with a sandboxed-by-default configuration.
Rune: containers - Active when: install = true - Default: off
Backends¶
| Backend | Runtime | Notes |
|---|---|---|
docker (default) |
gVisor (runsc) |
Docker Engine via the official install script |
podman |
crun | podman + podman-compose from the distro |
crio |
- | not supported yet (fails at plan time) |
docker¶
- Installs Docker Engine with the official
get.docker.comscript (skipped whendockeris already present). - Adds the managed user to the
dockergroup whenusers.manageis on. - Installs gVisor and registers
runsc: on Debian/Ubuntu from the official APT repository; on RHEL by fetchingrunsc+ containerd shim binaries, thenrunsc installpromotes it to Docker's default runtime (with a daemon reload).
gVisor is the default runtime
Containers run under gVisor's user-space kernel unless started with an explicit --runtime.
Workloads that need raw kernel features (e.g. some eBPF users) should override the runtime per container.
podman¶
Installs podman, podman-compose, and the crun runtime from distro packages - no scripts, no extra repos.
Rootless prerequisites come along: passt (the pasta network backend) and uidmap on Debian/Ubuntu (shadow-utils on RHEL) for newuidmap/newgidmap.
podman-auto-update.timer is enabled system-wide.
When users.manage is on, the managed user also gets lingering enabled (loginctl enable-linger) and the same timer enabled in its user session, so rootless containers labelled io.containers.autoupdate are refreshed daily.
Configuration (features.containers)¶
| Field | Default | Description |
|---|---|---|
install |
false |
Deploy a container backend |
backend_type |
"docker" |
docker, podman, or crio |
skopeo |
true |
Also install skopeo for registry operations |