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
| Question | Proxmox VE | Docker |
|---|---|---|
| Main job | Manage virtual infrastructure | Run packaged applications |
| Runs directly on hardware | Yes, normally | Usually runs inside Linux |
| Creates full virtual machines | Yes | No |
| Creates Linux containers | Yes, with LXC | Yes, application containers |
| Guest owns its own kernel | VM: yes; LXC: no | No; shares its Linux host kernel |
| Best unit of management | VM, LXC, storage and network | Application or service |
| Typical backup boundary | Whole VM or LXC | Compose definition plus persistent data |
| Runs Windows guests | Yes, as VMs | No |
| Best fit | Multi-workload home lab | Application-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:
- Proxmox Storage Explained
- Docker Volumes vs Bind Mounts
- Back Up and Restore Docker Compose Services
- Where to Store Proxmox Backups
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:
- application-aware backups of Compose definitions, databases and persistent data
- 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?
| Situation | Recommended starting point |
|---|---|
| One dedicated Docker/media server | Docker directly on Ubuntu Server |
| First general-purpose Proxmox home lab | Docker inside an Ubuntu VM |
| Several isolated operating systems | Proxmox with separate VMs |
| Small trusted Linux infrastructure service | Unprivileged LXC may be suitable |
| Docker in LXC for minimal overhead | Experienced, deliberate design |
| Docker directly on the Proxmox host | Avoid |
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.
Related SmallGrid guides
- What Is Proxmox VE?
- Proxmox VM vs LXC
- Run Docker in a Proxmox VM or LXC?
- How to Build a Docker Server Inside Proxmox
- Home Server Operating Systems Compared
- Docker Compose Explained for Beginners
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.