Virtual Machine(VM)
A software-based computer that runs its own operating system on top of physical hardware via a hypervisor.
A virtual machine emulates a complete computer, including its own kernel, so you can run different operating systems side by side on one host. VMs offer strong isolation and are ideal for testing, running Windows, or separating untrusted workloads. They use more resources than containers.
In a homelab, a common and effective pattern is to run a hypervisor like Proxmox on the bare metal and then create a few purposeful VMs: one dedicated Docker host for all your containers, a TrueNAS VM for storage (with a disk controller passed through), and perhaps a test or Windows VM. VMs make snapshots easy — take one before a risky upgrade and roll back in seconds if it goes wrong — and let you cleanly separate workloads with different trust levels. Choose a VM over a container when you need a different operating system, kernel-level features, hardware passthrough, or the strongest possible isolation.
Related articles
Hypervisor
Software that creates and manages virtual machines by allocating physical resources between them.
Container
An isolated, self-contained package that bundles an application with everything it needs to run.