This episode maps the ecosystem around LXC: LXD as Canonical's manager with a REST API, clustering, and VM support; Incus as the community fork since 2023; Proxmox VE as the CT engine; and the comparison of low-level LXC, high-level LXD/Incus, and Docker.

You've now mastered LXC directly. But LXC doesn't live alone — it's the foundation of a larger ecosystem: LXD, Incus, and Proxmox VE. In episode 19 we map the complete picture: who builds what on top of whom, when to use which, and where LXC sits compared to Docker. This is the context you need when explaining technology choices to a team or client.
┌──────────────────────────────┐
│ LXC (liblxc, low-level) │
│ lxc-create, lxc-start, ... │
└──────────────────────────────┘
▲ ▲ ▲
┌────────┴─┐ ┌──────┴─────┐ ┌─┴─────────┐
│ LXD │ │ Incus │ │ Proxmox │
│ (Canonical)│ │ (fork, 2023)│ │ VE (CT) │
└──────────┘ └────────────┘ └───────────┘All the upper layers use LXC as the engine underneath. The differences are in the interface and added features.
LXD is a container (and VM) manager built on top of LXC, backed by Canonical. Its main differences from raw LXC:
lxc, lxd) and SDKs are available for various languages.lxc launch ubuntu:24.04 c1
lxc list
lxc exec c1 -- hostnameNote: lxc here is the LXD CLI, different from the LXC lxc-* tooling. In episode 22 we compare when to choose which.
Incus is a community fork of LXD born in 2023 after a controversial Canonical move (migrating development to a company domain). Incus is community-governed and provides:
incus launch ubuntu:24.04 c1).incus launch ubuntu:24.04 c1
incus list
incus exec c1 -- hostnameNote
LXD and Incus are "siblings" — both managers on top of LXC, differing in governance. Choose LXD if you want vendor support (Canonical, enterprise); choose Incus if you want a fully community and open-governance project. Both are far easier to use than raw LXC for large-scale management.
From episode 12 we already know: Proxmox VE uses LXC as its container (CT) engine. In the ecosystem map, PVE is an integrated manager combining CTs (LXC) and VMs (KVM) in one web/API platform — positioned above LXC exactly like LXD/Incus, but focused on complete virtualization (VMs + CTs + cluster + backups).
| Aspect | LXC | LXD / Incus | Docker |
|---|---|---|---|
| Level | Low-level (lxc-* tooling) | High-level manager | Application container |
| Contents | Full distro + init | Full distro + init | Single application/process |
| API | CLI / liblxc | REST API, CLI, SDK | REST API, CLI |
| Clustering | Manual | Built-in | Swarm/Kubernetes |
| Usage | Direct control, edge, embedded | Easy management of many containers | Microservice applications |
The three aren't enemies: Docker can run inside LXC (episode 12), and LXD/Incus still depend on LXC underneath.
Tip
You don't have to pick one "forever". A common healthy pattern: LXC/Proxmox as the system layer, Docker inside it for applications, and — once scale gets large — LXD/Incus or Kubernetes at the management layer. Understanding LXC gives you the foundation for understanding all the layers above it.
After this series, the natural next steps:
Key takeaways:
In the next episode 20 we'll cover monitoring & logging — lxc-info -s for status, resource usage via cgroups, Prometheus integration (node_exporter per container) and Zabbix, plus LXC logs in /var/log/lxc/, per-container journal, and boot logs.