Containers & Virtualization
Two different ways to run isolated workloads on one Linux machine - lightweight containers sharing the host kernel, and full virtual machines running their own - and the standard Linux tools for each.
Both approaches solve "run this workload without letting it interfere with anything else on the machine," but they draw the isolation boundary in different places, with very different tradeoffs in overhead, startup time, and what "isolated" actually guarantees.
-
Containers vs. Virtual Machines
Containers share the host's kernel and isolate processes from each other; virtual machines virtualize hardware itself and each run a complete, separate kernel - a difference that shapes startup time, overhead, and how strong the isolation actually is.
-
Docker Basics
Docker packages an application with its dependencies into a portable image, then runs it as an isolated container using the host's own kernel - the tool that made containers mainstream, and still the most common one you'll meet.
-
KVM and libvirt
KVM turns the Linux kernel itself into a hypervisor using the CPU's own virtualization extensions, QEMU supplies the virtual hardware, and libvirt is the standard management layer (virsh, virt-manager) on top of both.
-
Podman and Rootless Containers
Podman runs containers without a privileged background daemon, and without root by default - a command-compatible alternative to Docker built specifically around closing the security gap its daemon model leaves open.