Containers are instances running on a host machine (bare metal or virtual), just like virtual machines. Like virtual machines, they can be customized and designed to whatever specification is required and can often be used in the way a virtual machine is used thus allowing isolated processes, networking, and user.

The difference between containers and virtual machines is that a guest operating system is not installed, and it usually consists only of the application code, and only run the necessary process(es) while running. This is because the containers work by using kernel features of the host operating system and the layered file system instead of the aforementioned emulation layer that virtual machines need.