When a single server needs to be split between multiple customers, the solution that seems the most straightforward is virtual machines. In recent years, a new technology imposed itself as an alternative: lightweight containers. Containers enable isolation of different processes on a single computer. Each container acts as if it were alone on the system. While virtual machines use full virtualization and create a complete virtual computer, containers use standard features of the kernel. As such, containers provide better performance, at the expense of some rigidity compatibility-wise. This rigidity is compensated by convenient tools that permit the creation of an entire ecosystem of containerized applications. This paper explores the theoretical and practical differences between each solution.
Wes FelterAlexandre FerreiraRam RajamonyJuan Campos
Shripad NadgowdaSahil SunejaAli Kanso