Introduction to virtualisation
Virtualisation is being adopted in many different environments and situations. If you are a developer, virtualisation provides you with a contained environment where you can safely do almost any sort of development without messing up your main working environment. If you are a systems administrator, you can use virtualisation to more easily separate your services and move them around based on demand.
The default virtualisation technology supported by Ubuntu is KVM. For Intel and AMD hardware, KVM requires virtualisation extensions. KVM is also available for IBM Z and LinuxONE, IBM POWER, and ARM64.
QEMU provides the user-space backend for the KVM experience, but it also can be used for hardware without virtualisation extensions through its Tiny Code Generator (TCG) mode.
While virtualisation is similar to containers in many ways, they are also different. Containers are implemented via other solutions like LXD, systemd-nspawn, containerd and others.