You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
group_add field in stack.yaml — adds supplementary GIDs to the container process without changing the user or primary group. Accepts a list of group IDs or names (e.g. ["1500", "docker"]). Changes are included in the config hash and trigger recreation on apply.
exec <name> [command...] — run a command inside a running container. Defaults to /bin/sh. Allocates a PTY and sets raw terminal mode when stdin is a terminal; window resize is forwarded automatically. Non-TTY invocations (piped stdin) run without a PTY.
start --follow and restart --follow stream container logs immediately after the container is running. Requires a single container name (not compatible with --all or multiple names).
check-update --follow streams logs after --apply completes for a single container. Requires both --apply and exactly one container name argument.
images [--unused] — list all local images with tags, size, age, and attached container names. --unused filters to images not referenced by any running container or stack declaration. -o json|yaml includes per-image container list with name and state.
volumes [--unused] [--size] — list local volumes with driver and attached containers. --unused filters to dangling (unmounted) volumes. --size fetches disk usage via the daemon's disk-usage endpoint (triggers a daemon-side scan) and adds a SIZE column; in JSON/YAML the size is in bytes (-1 when the driver does not report). -o json|yaml additionally includes the host mountpoint and per-container mount details (source, destination, read_only).
networks [--unused] — list user-defined networks (system networks bridge, host, none are excluded). --unused filters to networks not connected to any container. -o json|yaml includes per-network container list with IP address and gateway. The MANAGED column indicates networks created by containerctl.
prune [--images] [--volumes] [--networks] [--all] [--dry-run] [--force] — remove unused local resources. At least one resource type must be selected; --all is equivalent to --images --volumes --networks. --dry-run previews what would be removed without acting. When stdin is not a terminal, --force is required to prevent accidental deletion in scripts.
status -o json|yaml now includes networks (name, ip_address, gateway) and mounts (type, name, source, destination, read_only) for each container. Tmpfs mounts are excluded. These fields are omitted from the text table output.
Changed
All JSON output is now indented with 2 spaces for readability (previously compact single-line).
All YAML output uses 2-space indentation consistently across all commands.
volumes -o json|yaml includes the host mountpoint path and an optional size field (populated only when --size is passed).
networks -o json|yaml fields are now consistently snake_case with explicit JSON tags (id, name, driver, labels).
ListContainers now populates full mount details (ContainerMount: type, name, source, destination, read_only) and network details (ContainerNetworkInfo: name, ip_address, gateway) instead of plain string slices. This powers the enriched JSON output across status, volumes, networks, and images.
Fixed
exec no longer leaves the terminal in raw mode (invisible input) after the container exits with a non-zero code. os.Exit bypasses deferred functions; the terminal state is now restored explicitly before exit.
serve browser terminal no longer shows a double prompt after a blocked or unrecognised command. The error message handler no longer calls writePrompt() — the done message that always follows handles the prompt.
volumes -o json no longer silently omits the size field for empty volumes. Changed from int64 with omitempty (which drops 0) to *int64 — nil means not fetched (omitted), 0 means genuinely empty, -1 means driver does not report.
prune --images no longer marks images that are actively used by running containers as candidates for removal. Image matching now uses the short 12-character image ID from the container's ImageID field as the primary check, with tag name as a fallback.