Skip to content
Français
Account: not signed in, sync available My learning
Select theme
Français

Incus: the system container and VM manager

  • 20 min

By updated

Improve this page

incus logo

Incus is the community fork of LXD, created by Stéphane Graber and maintained by the Linux Containers project. From a single CLI (incus) it drives both system containers (complete Linux distributions, in the manner of a lightweight VM) and QEMU virtual machines. Open source, simple and robust, it has established itself as the light alternative to Proxmox and the natural successor to LXD. The reference LTS in 2026 is Incus 7.0. This page lays the groundwork and points to the guides of the section.

Where to start with Incus?

The shortest path takes three steps. Install Incus from the Zabbly repository or your distribution's native package, in a few minutes. Then follow the first steps to launch your first system container and your first virtual machine, and learn to manage your instances day to day. The training path lists every lesson in reading order, with progress tracking.

What Incus is

Incus is an instance manager: it administers containers and virtual machines through a single CLI and a single REST API. Where Docker launches application containers (one process, a layered image, ephemeral), Incus launches system containers: a complete distribution with its init (systemd, openrc), its services and its users. You connect to it like a small machine, and the instance persists over time.

It builds on proven Linux kernel technologies, namespaces and cgroups for containers, and QEMU/KVM for virtual machines. That dual nature makes it versatile: a light container for a Linux service, a full virtual machine when a different kernel or hardware isolation is needed.

Where Incus comes from: the LXD fork

Stéphane Graber, the former LXD lead at Canonical, started Incus in 2023 when LXD was brought under Canonical's sole governance. Incus takes the same technical base but under community governance (Linux Containers), fully open source, with no proprietary contribution agreement. Zabbly, the company Graber founded, handles packaging and commercial support.

In practice, for anyone coming from LXD: the CLI moves from lxc to incus, and an lxd-to-incus tool migrates an existing install in place. Two dynamics accelerated adoption: the refusal of lock-in after LXD moved under a Canonical CLA, and the VMware exodus of 2024 that pushed teams to look for open alternatives.

Incus against the other tools

Every tool has its zone of relevance. Here is how to place Incus.

ToolNatureWhen to choose it
Incussystem containers plus VMs, CLI and APIlightweight Linux machines and VMs, with no heavy interface
Dockerapplication containerspackage and distribute an application
LXDthe Canonical equivalentif you stay in the Ubuntu and Canonical ecosystem
Proxmox VEhypervisor with a web interfacea complete virtualisation server with a GUI

Incus is not strictly a competitor to Docker: since version 6.3 it can even run OCI images (Docker), but its core remains the system container and the virtual machine. Against Proxmox, it offers a lighter, command-line first approach, with no mandatory web interface, though a UI does exist.

The key features

Incus covers the whole instance lifecycle, which makes it a complete platform rather than a mere container launcher.

  • Containers and VMs: the same command handles both, with or without the --vm option.
  • Images and remotes: an official image server (images:) provides dozens of ready distributions; you can also build your own.
  • Networking: a default NAT bridge (incusbr0), through to distributed OVN networks in a cluster.
  • Storage: pools on dir, btrfs, lvm, zfs or ceph, with volumes, snapshots and copies.
  • Snapshots and backups: freeze and restore an instance, export an archive.
  • Clustering: gather several nodes with a distributed database and automatic placement.
  • Devices: attach disks, network cards, GPUs (passthrough), ports (proxy).
  • REST API: everything the CLI does can be driven remotely and automated.

Which version to install

Incus follows an annual LTS plus monthly feature releases model. For production, target an LTS:

  • Incus 7.0 LTS (May 2026): the version recommended for new installations;
  • Incus 6.0 LTS: still supported until 2029, useful if your distribution pins it;
  • feature releases (7.1, 7.2 and so on): to try new things, supported only until the next one.

The installation detail (signed Zabbly repository or native package) is in the installation guide.

Why I recommend Incus

I like Incus because it reconciles two worlds: the lightness of containers and the flexibility of virtual machines, without the weight of a full hypervisor. For a homelab or a Linux infrastructure server, it is often the best compromise: you deploy a working Debian machine in two seconds, back it up with a snapshot, automate it through the API, and the day you need a different kernel or Windows, you switch to a virtual machine with the same command. Community governance and the absence of any dependency on a single vendor finish convincing me.

Key points

  • Incus is the community fork of LXD: a single CLI, incus, for system containers and QEMU virtual machines.
  • The reference version is the Incus 7.0 LTS; feature releases are supported only until the next one.
  • Moving from a container to a virtual machine, for another kernel or for Windows, takes the same command.
  • The path aims at a sovereign private cloud, then at migrating a VMware estate onto it.
  • The seven stages of the course follow the order of the navigation: from installation to a private cloud.

FAQ: common questions about Incus

Where this path leads: a sovereign alternative to VMware

If this course goes as far as it does, from the first container to a private cloud, it is not for the sake of exhaustiveness. The stated goal is to offer an exit path from VMware, entirely open source and sovereign. Since the Broadcom acquisition of VMware and the brutal licensing overhaul that followed, many teams have been looking to take back control of their virtualisation without depending on a single vendor.

Incus, its immutable base Incus OS, its Operations Center for driving a fleet and its Migration Manager for importing vSphere virtual machines form precisely that answer. The logic of the path is therefore clear: rebuild a private cloud equivalent to vSphere (virtual machines, containers, distributed networks, high availability), then migrate what exists onto it. The seven steps below follow that goal, from getting started through to switching a whole estate.

The Incus course

This section follows a seven-stage progression, from the first container to a private cloud. It is exactly the order of the navigation on the left: follow it in order to learn, or pick the building block you need.

1. Getting started with Incus

This first stage draws the founding distinction with Docker. Incus vs Docker explains that Docker packages an ephemeral application, whereas Incus provides a complete Linux machine that persists over time. Installing Incus then takes a few minutes on Debian, Ubuntu or an RPM distribution, through the signed Zabbly repository or the native package. Once incus admin init has run, the first steps launch your first system container or your first virtual machine with a single command, followed by exec and snapshot. It is the foundation to master before networking, storage or clustering.

2. Running Incus day to day

This is the core of the job for an Incus administrator. Managing instances covers the instance lifecycle (start, clone, snapshot, export), then OCI containers show how to run a Docker Hub image inside Incus. Networking connects containers through the incusbr0 bridge (NAT, proxy device, DNS), storage provisions ZFS or LVM pools with volumes and snapshots, and profiles and projects industrialise and compartmentalise configuration.

Field needs follow: GPU passthrough to attach an NVIDIA card to a container or a virtual machine, remote access and the web UI to drive remote servers, and automating image builds with Packer and Ansible. The stage ends with securing Incus, which covers unprivileged instances, limits and restricted projects, and debugging a VM at boot to recover a machine stuck in emergency mode.

3. Incus OS, the immutable base

What is Incus OS? An immutable operating system dedicated to Incus: no packages to manage, no shell, everything through an authenticated API. System partitions are read only, and it is the base you choose when reproducibility and a reduced attack surface outrank the flexibility of a classic server. Incus OS without a shell presents this host you no longer tinker with by hand, and its seed installation. A/B updates and rollback apply atomically, with automatic rollback on failure. Tailscale on the nodes then links the machines through a private mesh network, and backup and monitoring protect and watch a base with no shell.

4. Clustering and high availability

An Incus cluster gathers several servers under a distributed database, with automatic instance placement and high availability. Building a cluster shows that three nodes are enough to reach a quorum that survives losing one machine, with placement and evacuate. Roles, quorum and HA explains how to spread the roles (database, OVN, workers) and hold the quorum, then workers and remote nodes extends the cluster to distant machines. The stage ends with shared CephFS storage: without it, an instance stays pinned to its node; with it, it migrates live from one server to another. It is the prerequisite of any serious private cloud.

5. Private cloud (IaaS)

This is the summit of the path: turning the cluster into a private cloud, a sovereign IaaS comparable to a scaled-down AWS. You first build OVN virtual networks with their load balancers (OVN networking), the equivalent of distributed VPCs. Network ACLs then segment traffic like Security Groups. The multi-tenant private cloud isolates several tenants with their own projects, quotas, scoped credentials and peering between VPCs. Operations Center drives the fleet of clusters, and a three-tier stack with Terraform describes the whole thing as Infrastructure as Code. At the end of the chain: a multi-tenant platform built on your own machines, with no external provider.

6. Migrating to Incus

Adopting Incus rarely starts from a blank page. This stage covers the three migration routes. From VMware, Migration Manager orchestrates the transfer of virtual machines, a burning subject since the exodus that followed the acquisition. From LXD, migrating from LXD switches an existing install in place with lxd-to-incus, with no full reinstall. And for any physical or virtual server, incus-migrate imports the machine into an Incus container or virtual machine. Enough to bring back a whole estate, progressively.

7. Infrastructure as Code

An Incus infrastructure described as code becomes reproducible, versioned and reviewed like any other software. This stage presents two complementary approaches. The lxc/incus Terraform provider provisions networks, profiles and instances declaratively, and lends itself to complex setups such as a complete three-tier architecture. The Ansible connection plugin then pushes configuration inside the instances, without even going through SSH. Together they close the loop: you stop clicking and apply a plan, and the infrastructure rebuilds itself identically on demand.

More information

Is this project useful to you?

The guides, courses, quizzes and labs stay free. If you use them regularly, you can contribute to their upkeep and development.

Become a supporting member (new tab) One-time support (new tab) Learn more

Follow the project on LinkedIn