Quick answer

What this guide helps you do

Compare Proxmox and Docker for a home server, understand why they are different layers, and choose bare metal, a VM or LXC for Docker workloads.

Quick answer

Proxmox and Docker are not direct replacements.

  • Proxmox VE manages physical hardware, virtual machines and LXC containers.
  • Docker packages and runs applications as containers inside a Linux operating system.

For a flexible beginner home lab, a strong default is:

Physical server
└── Proxmox VE
    └── Ubuntu Server VM
        └── Docker Engine + Compose
            ├── Jellyfin
            ├── Sonarr
            ├── Radarr
            └── other application containers

Use Docker directly on Ubuntu when you want the simplest single-purpose application server. Use Proxmox when you want multiple isolated systems, snapshots, whole-guest backups, testing or room to add non-Docker workloads.

Do not install Docker directly on the Proxmox host. Keep the hypervisor focused on virtualisation, storage, networking and backups.


The difference in one table

QuestionProxmox VEDocker
Main jobManage virtual infrastructureRun packaged applications
Runs directly on hardwareYes, normallyUsually runs inside Linux
Creates full virtual machinesYesNo
Creates Linux containersYes, with LXCYes, application containers
Guest owns its own kernelVM: yes; LXC: noNo; shares its Linux host kernel
Best unit of managementVM, LXC, storage and networkApplication or service
Typical backup boundaryWhole VM or LXCCompose definition plus persistent data
Runs Windows guestsYes, as VMsNo
Best fitMulti-workload home labApplication-focused server

The useful decision is not simply “Proxmox or Docker?” It is:

Do I need a virtualisation layer?
If yes, which guest should run Docker?

What Proxmox adds

Proxmox VE is a Debian-based virtualisation platform built around KVM virtual machines and LXC containers.

It adds a central interface for:

  • creating and managing VMs and LXCs
  • virtual networking and Linux bridges
  • local, network and distributed storage
  • snapshots and backups
  • scheduled jobs
  • clustering and high availability
  • hardware passthrough
  • separate test and production guests

Proxmox is useful when one physical machine needs to behave like several separate servers.

Read What Is Proxmox VE? for the platform introduction.

What Docker adds

Docker runs applications in containers using the host Linux kernel.

A Compose project describes:

  • container images
  • environment variables
  • networks
  • ports
  • persistent volumes or bind mounts
  • healthchecks
  • restart policies
  • dependencies between services

This makes applications easier to reproduce than a server configured entirely by hand.

Docker does not provide a separate kernel for each application, manage full Windows or Linux VMs, or replace the host operating system.

Use Docker Compose Explained for Beginners for the application layer.

Option 1: Docker directly on Ubuntu Server

Physical server
└── Ubuntu Server
    └── Docker Engine
        └── application containers

Choose this when:

  • the machine has one clear purpose
  • nearly every service runs in Docker
  • you want the fewest infrastructure layers
  • simple storage and hardware access matter
  • whole-machine virtualisation is unnecessary
  • rebuilding from documented Compose files is acceptable

Advantages:

  • simplest architecture
  • lowest virtualisation overhead
  • direct access to host storage and devices
  • conventional Ubuntu and Docker documentation
  • fewer networking layers

Trade-offs:

  • applications share one host operating system
  • testing host-level changes is harder to isolate
  • whole-server snapshots are not built in
  • a host failure affects every workload
  • restoring individual applications depends on the quality of the data backups

This is often the right answer for a dedicated Jellyfin or media server.

Option 2: Docker inside an Ubuntu VM on Proxmox

Physical server
└── Proxmox VE
    └── Ubuntu Server VM
        └── Docker Engine
            └── application containers

This is the best general Proxmox-and-Docker layout for beginners.

Choose it when:

  • the server will run several infrastructure roles
  • Docker should be isolated from the hypervisor
  • VM snapshots and whole-guest backups are useful
  • you want a disposable test VM
  • other operating systems or appliances may be added
  • the hardware has enough memory and storage for a guest OS

Advantages:

  • clear boundary between Proxmox and Docker
  • familiar Ubuntu environment
  • conventional Docker storage and networking behavior
  • VM can be backed up and restored as one unit
  • easier to test upgrades with a cloned or temporary guest
  • fewer LXC nesting complications

Trade-offs:

  • VM consumes additional memory and disk space
  • storage and GPU passthrough require planning
  • networking has another visible layer
  • VM backups can become large if media is stored inside the guest disk

Keep the VM system disk, Docker application data and large media storage conceptually separate.

Use How to Build a Docker Server Inside Proxmox for the complete implementation.

Option 3: Docker inside a Proxmox LXC

Physical server
└── Proxmox VE
    └── LXC container
        └── Docker Engine
            └── application containers

Docker inside LXC can work, but it nests one container system inside another.

Potential benefits:

  • lower guest overhead
  • fast startup
  • efficient use of memory and storage

Complications can include:

  • nesting features
  • shared host kernel
  • UID and GID mapping
  • bind-mount permissions
  • AppArmor and capability restrictions
  • Docker storage-driver behavior
  • GPU and USB device mapping
  • more Proxmox-specific recovery steps

Use this only when the lower overhead solves a real constraint and you are prepared to maintain the extra integration.

Read Run Docker in a Proxmox VM or LXC? for the focused comparison.

Option 4: individual services in LXC containers

Proxmox VE
├── Pi-hole LXC
├── monitoring LXC
├── small web-service LXC
└── Ubuntu Docker VM

Not every service needs Docker. A small trusted Linux service can run directly in an unprivileged LXC when:

  • it supports the host kernel
  • its package installation is simple
  • low overhead matters
  • its backup boundary is clear
  • bind-mount permissions are understood

This mixed design works well when used deliberately. It becomes difficult to maintain when every application is placed in a different guest without a reason.

Use Proxmox VM vs LXC for the architectural choice.

Why Docker should not run on the Proxmox host

The Proxmox host is the infrastructure control plane. Installing application workloads directly on it can:

  • introduce package conflicts
  • complicate firewall and network behavior
  • blur application and hypervisor backups
  • make Proxmox upgrades harder to diagnose
  • increase the consequence of an application compromise
  • make a future host rebuild less predictable

Keep Docker in a VM or, for an experienced design, an LXC guest.

Storage design

Avoid putting every kind of data inside one large VM disk.

A clearer design separates:

Proxmox host storage
VM system disk
Docker Compose and application configuration
databases and persistent volumes
large media or shared files
backup destination

This allows frequent backups of small, important configuration without repeatedly copying replaceable or separately protected media.

Useful guides:

Networking design

In a typical Proxmox layout:

Physical NIC
→ Proxmox Linux bridge, commonly vmbr0
→ VM virtual network device
→ Ubuntu guest network
→ Docker bridge networks
→ application container

Each layer has a separate purpose. Do not expose the Docker daemon over an unauthenticated network socket, and do not change vmbr0 to fix a container-only problem.

Use:

Backups and snapshots

VM snapshots are useful short-term recovery points, but they do not replace independent backups.

For Docker inside a VM, use two recovery layers:

  1. application-aware backups of Compose definitions, databases and persistent data
  2. Proxmox backups of the VM itself

This prevents the VM archive from being the only copy of rapidly changing application data.

Read Proxmox Snapshots vs Backups and Backups That Don’t Lie.

Which layout should you choose?

SituationRecommended starting point
One dedicated Docker/media serverDocker directly on Ubuntu Server
First general-purpose Proxmox home labDocker inside an Ubuntu VM
Several isolated operating systemsProxmox with separate VMs
Small trusted Linux infrastructure serviceUnprivileged LXC may be suitable
Docker in LXC for minimal overheadExperienced, deliberate design
Docker directly on the Proxmox hostAvoid

A maintainable small home lab

A practical layout is:

Proxmox host
├── Ubuntu Docker VM
│   ├── media automation
│   ├── dashboards
│   └── internal applications
├── Home Assistant VM, if used
├── small infrastructure LXC, if justified
└── independent backup storage

Start with fewer guests. Split a workload only when isolation, backup frequency, hardware access, exposure or maintenance requirements differ.


Recap

Use Docker directly on Ubuntu for the simplest application-focused server. Use Proxmox when the physical machine needs to host multiple isolated systems, snapshots, test environments or non-Docker workloads.

When using both, put Docker inside an Ubuntu VM unless you have a specific reason and the experience to manage LXC nesting. Proxmox manages the infrastructure; Docker manages the applications.