Today we released version v0.0.1-beta2 of incus-compose, it’s a bugfix release since beta1 and should be pretty stable for most compose scenarios.
Please report any kind of bugs you see to:
Many thanks and have fun,
René
incus-compose README as reference here:
Bring the familiar Docker Compose workflow to Incus containers. incus-compose implements the Compose specification for the Incus ecosystem, allowing you to define and run multi-container applications using the same docker-compose.yml files you already know.
Why incus-compose?
Incus provides powerful system containers and virtual machines with superior security and isolation, but lacks the declarative multi-container orchestration that Docker Compose offers. This tool bridges that gap:
- Use existing
docker-compose.ymlfiles with Incus containers - Leverage Incus’s native OCI registry support for image pulling
- Run Docker/OCI images directly from registries
- Manage complex multi-container applications with familiar commands
- Benefit from Incus’s resource efficiency and security model
Quick Links
- Getting Started - Install and run your first compose project
- CLI Reference - Commands and options
- Compose Compatibility - What works and what doesn’t
- Architecture - How it works under the hood
- Why Incus? - Benefits over Docker
Full Documentation | Contributing
Status
Beta - testing the beta1 release of incus-compose.
What works:
up,down,list(andps),start,stop,restart,exec,config,logscommands- Compose project parsing via compose-go
- OCI image pulling from docker.io, ghcr.io, and other registries
- Bridge networks with automatic name sanitization
- Storage volumes with UID/GID shifting for proper permissions
- Bind mounts (local connections only)
- Port forwarding via proxy devices
- Incus project isolation
What’s coming:
- VM instance support alongside containers
- Container image building via Podman/Docker
- Advanced compose features (healthchecks, resource limits, etc.)
Architecture
incus-compose uses a resource-first design, see Architecture Documentation for details.
Quick Start
Prerequisites
# Add OCI image remotes to Incus
incus remote add --protocol oci docker.io https://docker.io
incus remote add --protocol oci ghcr.io https://ghcr.io
incus remote add --protocol oci registry.gitlab.com https://registry.gitlab.com
Installation
Binary:
Source:
# Build from source
git clone https://gitlab.com/r3j0/incus-compose
cd incus-compose
just build
# Or install directly
go install gitlab.com/r3j0/incus-compose/cmd/incus-compose@latest
Usage
# Create a compose.yaml
cat > compose.yaml <<EOF
services:
web:
image: docker.io/nginx:alpine
ports:
- "8080:80"
volumes:
- web-data:/usr/share/nginx/html
volumes:
web-data:
EOF
# Start services
incus-compose up
# View logs
incus-compose logs -f
# List running services
incus-compose list
# Stop and remove
incus-compose down
See Getting Started for detailed examples.
Credits
This project builds on work by @bketelsen.
Some components are adapted from docker compose.
This project uses AI tools as development aids (drafting, iteration, reviews, tests, and documentation).
Architecture, constraints, and final code decisions are owned by the human committers.