incus-compose is a drop-in replacement for docker compose that runs your compose.yaml on Incus, with the full Incus API as an escape hatch when you need more than the Compose spec covers.

Twelve days for 1.3 to come: backup, port-forward, and all the commands you might have been looking for.

Full release notes: incus-compose 1.3 has been released on the Linux Containers forum.

Two bits that did not make the announcement.

run was a lot of hassle to create

Incus has no “start this, tell me what it exited with”. An instance runs its entrypoint and the exit status goes nowhere.

So a one-off starts a helper that just blocks, and the actual command goes in as an exec, which is where the status comes from. The side effect is that your command is not PID 1.

That helper image is also the only part of a one-off that touches the network, which is why pull and up prefetch it. An air-gapped box can still run later.

incus-compose gained its own OCI registry client

oras-go is doing all the magic.

Incus hands you oci.entrypoint, which is ENTRYPOINT and CMD already concatenated into one argv, so there is no way to tell from the API which part was which. That distinction is the whole of command: behaving the way the compose spec says. Reading the image config straight from the registry was the way out, and the same read hands over the image’s VOLUME list for free.

Elsewhere

The backup command from this release, recorded end to end: incus-compose backup in action.

The mixed-architecture image work that also shipped in 1.3, and the by-hand review that found the defect in it: The Boring One In Action.

How it got to 1.0.0, six and a half months and 22 betas after the first announcement: Twenty-Two Betas.

Running an Incus storage pool on a tmpfs: Tmpfs with Incus, a Breeze.

How the codebase got its shape, and the first of the architecture posts that follow from it: Three Rewrites.

Repo · Releases · CHANGELOG · docs.incus-compose.org · CLI reference

incus-compose self-update

By René Jochum. License: CC-BY-4.0.