When we talk about virtualization, it means running processes/applications in an isolated environment from the host machine. To run each process, there is need to cpu, memory, disk I/O, network etc. Linux kernel supports a feature i.e. known as control groups (cgroups) that allocates, account for and isolate hardware resources for a groups of processes.
This cgroups features is used in Docker, LXC and VMs.