LXC vs QEMU: containers vs virtual machines on Proxmox

Proxmox VE runs two kinds of guest: LXC system containers and QEMU/KVM virtual machines. Containers are lighter and faster; VMs are fully isolated and run any operating system. Here's how they differ and when to pick each.

What's the difference between LXC and QEMU?

LXC is OS-level virtualization: containers share the host's Linux kernel and run isolated user-spaces on top of it. There's no hardware to emulate, so a container boots in a second, uses almost no extra memory and packs densely onto a node, but it can only run Linux and stays tied to the host kernel.

QEMU is a full machine emulator. On Proxmox it's paired with KVM for hardware-accelerated virtualization, so each guest is a complete virtual machine with its own kernel and virtual hardware. That means you can run Windows, BSD or a custom kernel and get strong isolation and live migration, at the cost of a little more overhead than a container.

LXC vs QEMU at a glance

Same Proxmox host, two very different trade-offs.

Aspect LXC (containers) QEMU/KVM (virtual machines)
Virtualization type OS-level, shares the host kernel Full hardware virtualization (KVM)
Guest operating systems Linux only Any OS — Linux, Windows, BSD
Overhead & density Very low — many per node Higher — full VM per guest
Boot time ~1 second Full OS boot
Isolation Shared kernel (namespaces/cgroups) Strong — separate kernel
Custom / own kernel & modules No — uses the host kernel Yes
Live migration Offline / restart migration Live migration
Snapshots Filesystem snapshots (storage-dependent) Disk + RAM state (vmstate)
Typical use Dense Linux services, web apps, dev Windows, mixed OS, strict isolation

When should you use LXC or QEMU?

Choose LXC when…

  • The workload is Linux and you want maximum density per node.
  • You need fast boots and near-zero memory overhead.
  • It's a web app, database, reverse proxy or dev box.
  • You're fine sharing the host kernel (no custom modules).

Choose QEMU/KVM when…

  • You need Windows, BSD or any non-Linux OS.
  • You require a custom or specific kernel and modules.
  • Strong isolation matters — untrusted or multi-tenant guests.
  • You want live migration between nodes with no downtime.

Is QEMU the same as KVM? And what about "LXC vs KVM"?

They're not the same thing, they work together. KVM is the Linux kernel module that lets a CPU run virtual machines at near-native speed. QEMU is the user-space emulator that provides the virtual hardware (disk, NIC, display). On Proxmox, QEMU uses KVM for acceleration, so people say "QEMU", "KVM" or "QEMU/KVM" to mean the same full-VM guest type.

So "LXC vs KVM" is the same question as "LXC vs QEMU": container vs full virtual machine. Everything on this page applies either way.

Privileged vs unprivileged LXC

An unprivileged container maps its root user to an unprivileged UID on the host, so even root inside the container is a harmless normal user outside it. This is the safe default and what you should use for almost everything.

A privileged container runs its root as real host root. It's needed only for a few workloads that touch host-level features, and it's less isolated — treat it as trusted-only. For Docker-in-LXC you typically keep the container unprivileged and enable nesting and keyctl features instead.

Managing LXC and QEMU together

NexoVirt manages both guest types side by side on top of Proxmox VE, no node-hopping.

One list for every guest

LXC and QEMU guests across all hosts in a single, filterable, searchable list with live status, IP, cores, RAM and storage.

Provision from templates

Create containers from CT templates and VMs from cloud-init images with the same wizard, resource plans and IP assignment.

Console, snapshots & firewall

In-browser console, snapshots and per-guest firewall work for both LXC and QEMU, from the panel or the REST API.

Frequently asked questions

LXC is OS-level virtualization: containers share the host Linux kernel, so they are lightweight, boot in about a second and pack densely, but run Linux only. QEMU (with KVM on Proxmox) is full hardware virtualization: each guest is a complete virtual machine with its own kernel, so it can run any OS and is strongly isolated, at the cost of a little more overhead.

For Linux workloads, LXC generally has lower overhead and much faster boot times because there is no hardware to emulate and no second kernel to run. QEMU/KVM adds a small amount of overhead in exchange for full isolation and the ability to run any operating system. For most CPU-bound Linux services the day-to-day performance difference is small.

No, they work together. KVM is the Linux kernel module that provides hardware-accelerated virtualization; QEMU is the user-space emulator that provides the virtual hardware. On Proxmox, QEMU uses KVM, so "QEMU", "KVM" and "QEMU/KVM" all refer to the same full-VM guest type. "LXC vs KVM" is the same question as "LXC vs QEMU".

Use an LXC container when the workload is Linux and you want maximum density, fast boots and minimal memory overhead, for example web apps, databases, reverse proxies or dev boxes, and you do not need a custom kernel. Use a QEMU/KVM VM when you need Windows or another non-Linux OS, a specific kernel, strong isolation for untrusted guests, or live migration.

An unprivileged container maps its root user to an unprivileged host UID, so container root is a harmless normal user on the host. It is the safe default. A privileged container runs its root as real host root, which is less isolated and should be reserved for trusted workloads that need host-level access.

Yes. Proxmox VE runs LXC containers and QEMU/KVM virtual machines on the same host, and you can mix them freely. NexoVirt manages both guest types together in one panel and one REST API, with a shared create wizard, console, snapshots and per-guest firewall.

Proxmox guide

Run LXC and QEMU from one panel

NexoVirt sits on top of Proxmox VE and manages containers and VMs together. Community Edition is free (up to 2 nodes).

Related

Explore more of the Proxmox panel