If virtual machines feel a little heavy for what you actually need — maybe you just want a lightweight Pi-hole, a small web server, or a place to run one background service — Proxmox has a much lighter option that starts in seconds instead of minutes: the LXC container. This guide walks you through creating your first Linux container in Proxmox VE, step by step, with no prior container experience required.

We'll explain what a container actually is, how it's different from a full virtual machine, and then build one together using both the Proxmox web interface and the command line.

What You Will Learn

  • What an LXC container is and how it differs from a virtual machine
  • When you should choose a container instead of a VM
  • How to download a container template in Proxmox VE
  • How to create a container using the web interface wizard
  • How to create the same container from the command line with pct create
  • How to start, stop, and log into your new container
  • Common errors and how to fix them

What Is This Feature?

LXC stands for Linux Containers. Unlike a virtual machine, which runs its own complete operating system and pretends to be a separate physical computer, a container shares the host's Linux kernel directly. It's an isolated environment — with its own filesystem, processes, and network interface — but it isn't simulating hardware the way a VM does.

Proxmox manages LXC containers through its own toolkit called PCT, short for Proxmox Container Toolkit. You'll see the pct command used throughout this guide — it's simply the container equivalent of the qm command you might already know for managing virtual machines.

Because a container doesn't have to boot a full kernel and virtual hardware layer, it starts almost instantly and uses noticeably less RAM and CPU than a comparable VM.

Why Would You Use It?

Containers aren't a replacement for virtual machines — they're a different tool for a different job. Here's how to think about the choice:

SituationBetter ChoiceWhy
Running a single Linux service (web server, DNS ad-blocker, small app)LXC ContainerStarts fast, uses fewer resources, simple to manage
Running Windows, or an OS different from the host's kernelVirtual MachineContainers share the host's Linux kernel, so they can't run Windows or a different kernel
You need strong isolation for something you don't fully trustVirtual MachineVMs are more strictly isolated from the host than containers
You want the fastest possible boot time for a lightweight homelab serviceLXC ContainerContainers typically start in a couple of seconds

In short: if you just need "a Linux box that does one thing," a container is usually the more efficient choice. If you need a different operating system, kernel-level customization, or strict isolation, reach for a virtual machine instead.

Prerequisites

  • A working Proxmox VE 9.x installation with available storage space.
  • Administrative access to the Proxmox web interface, usually at https://your-server-ip:8006.
  • At least one storage location configured that supports container templates (the default local storage works fine for a first attempt).
  • A basic idea of how much disk space, memory, and CPU you want to give the container — you can always adjust these later.
  • SSH or console access to the Proxmox host if you plan to use the command-line method.

Step-by-Step Tutorial

Step 1: Download a Container Template

Unlike a VM, which you install from an ISO image, a container is built from a pre-made template — a compressed snapshot of a minimal Linux install (Debian, Ubuntu, Alpine, and others are all available).

Using the Web Interface

  1. In the left-hand tree, click your storage (for example, local).
  2. Click CT Templates.
  3. Click Templates to open the download list, choose a distribution such as Ubuntu or Debian, and click Download.

Using the Command Line

pveam update
pveam available
pveam download local ubuntu-24.04-standard_24.04-2_amd64.tar.zst

The exact template filename changes as new releases come out, so run pveam available first to see the current list and copy the exact name you want.

Step 2: Create the Container Using the Web Interface

  1. Click the Create CT button near the top-right of the Proxmox web interface.
  2. On the General tab, choose a hostname, set a root password (or add an SSH key), and note the CT ID — a unique number Proxmox uses to identify this container.
  3. On the Template tab, select the template you downloaded in Step 1.
  4. On the Disks tab, choose your storage and set a root disk size (8 GB is a reasonable starting point for a small service).
  5. On the CPU tab, set how many CPU cores to assign.
  6. On the Memory tab, set the RAM allocation — 512 MB to 1 GB is usually enough for a lightweight service.
  7. On the Network tab, choose a bridge (typically vmbr0) and either enable DHCP or set a static IP address.
  8. On the DNS tab, leave the defaults unless you have a specific DNS server you want to use.
  9. Review your settings on the Confirm tab, then click Finish.

Once creation completes, you'll see your new container listed in the left-hand tree.

Step 3: Create the Same Container from the Command Line

If you'd rather script this or just prefer the terminal, the same result can be achieved with a single pct create command:

pct create 200 local:vztmpl/ubuntu-24.04-standard_24.04-2_amd64.tar.zst \
  --hostname my-container \
  --storage local-lvm \
  --rootfs local-lvm:8 \
  --cores 1 \
  --memory 1024 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --password

Adjust the CT ID (200), hostname, storage name, and resource values to match your own setup.

Step 4: Start the Container

From the web interface, select the container and click Start. From the command line:

pct start 200

Step 5: Log Into the Container

You can open a console directly from the Proxmox web interface by selecting the container and clicking Console, or connect from the command line on the Proxmox host itself:

pct enter 200

This drops you directly into a root shell inside the container, without needing a separate SSH connection.

Step 6: Resize the Container Later (Optional)

It's common to underestimate how much disk space a container will need. The good news is that you don't need to recreate the container from scratch to fix this — Proxmox lets you grow a container's root disk while it's running.

pct resize 200 rootfs +4G

This command adds 4 GB to the root filesystem of container 200. Note that Proxmox only supports growing disks this way, not shrinking them, so start conservatively and expand later rather than guessing too high up front.

Commands Explained

CommandWhat It Does
pveam updateRefreshes the list of container templates available for download from Proxmox's template repositories.
pveam availableLists all container templates you can currently download, along with their exact filenames.
pveam download local <template>Downloads a specific container template to the storage you name (here, local).
pct create <id> <template> [options]Creates a new container from a template, using the CT ID and options you specify, such as storage, CPU, memory, and network settings.
pct start <id>Boots the specified container.
pct stop <id>Forcefully stops the specified container, similar to pulling the power on a VM.
pct enter <id>Opens a root shell directly inside a running container from the Proxmox host.
pct listShows all containers on the host along with their status.

Common Errors

  • "unable to find configuration file" or CT ID already in use. This means the CT ID you chose is already assigned to another VM or container. Pick a different, unused ID or check pct list and qm list for what's already taken.
  • "no such logical volume" when creating a container. This usually means the storage name you specified in --rootfs or --storage doesn't exist or doesn't support container root disks. Check your storage configuration under Datacenter > Storage.
  • Template not found. If pct create can't find your template, double-check the exact filename with pveam available — template filenames change with each new release and must match exactly.
  • Container has no network connectivity. This is often caused by selecting the wrong bridge, or the container's net0 settings not matching your actual network setup. Confirm the bridge name matches what's configured under Datacenter > Network on the Proxmox host.

Troubleshooting

  1. Check the container's status. Run pct status <id> to confirm whether it's running, stopped, or in an error state.
  2. Review the container's configuration. Run pct config <id> to see its current settings, including memory, disk, and network configuration.
  3. Check the Proxmox task log. The Task History panel at the bottom of the web interface shows the exact error message from any failed operation.
  4. Confirm storage has enough free space. Go to Datacenter > Storage and check that the target storage isn't full — container creation fails silently on some setups if there isn't enough room.
  5. Try creating the container again with a fresh template. If a downloaded template is corrupted or incomplete, delete it from CT Templates and download it again.

Best Practices

  • Stick with unprivileged containers (the Proxmox default) unless you have a specific reason to use a privileged one — they're more isolated from the host and safer by default.
  • Keep CT IDs organized, for example reserving ranges like 100–199 for VMs and 200–299 for containers, so you can tell them apart at a glance.
  • Start with modest CPU and memory allocations and increase them later if needed — containers make resizing easy, and it's simpler to scale up than to have unused resources locked away from other VMs.
  • Take a snapshot or backup before making major configuration changes to a container, just as you would with a VM.
  • Run pveam update occasionally so your template list includes the latest available distribution releases.

Frequently Asked Questions

Can I run Windows in an LXC container?

No. Containers share the host's Linux kernel, so they can only run Linux distributions. For Windows, you'll need a full virtual machine instead.

What's the difference between a privileged and unprivileged container?

An unprivileged container maps its internal root user to a regular, low-privilege user on the Proxmox host, which limits the damage possible if something inside the container is compromised. Proxmox creates unprivileged containers by default, and it's the recommended option for most use cases.

Can I convert a container into a virtual machine, or the other way around?

Not directly — they're fundamentally different technologies. If you need to switch, you'll typically reinstall your application inside a new VM or container of the type you actually need.

How do I delete a container I no longer need?

Select the container in the web interface, click More, then Remove, or run pct destroy <id> from the command line. Make sure you no longer need any data on it first, since this permanently deletes the container.

Do containers support snapshots and backups like virtual machines?

Yes. Both snapshots and the Proxmox backup system work with LXC containers in the same way they work with VMs, as long as your storage type supports snapshots.

Why does my container show a different CPU or memory usage than I expected?

Because containers share the host's kernel, some monitoring tools inside the container may report host-wide statistics rather than the container's own limits. This is a known quirk of container-based virtualization and doesn't mean your resource limits aren't being enforced — Proxmox still restricts the container to the CPU and memory values you configured.

Can I run Docker inside an LXC container?

It's technically possible with extra configuration, but it adds complexity and potential security trade-offs, especially with unprivileged containers. Many homelab users find it simpler to run Docker inside a dedicated virtual machine instead, and reserve LXC containers for single, lightweight services.

Conclusion

LXC containers are one of the most useful tools in Proxmox for running lightweight Linux services without the overhead of a full virtual machine. Once you've created your first container using the steps above, you'll likely find yourself reaching for containers by default for anything that doesn't specifically need a full VM. From here, a natural next step is exploring how to back up and snapshot your containers so your setup stays safe as you build on it.