This article was published in Espirito Livre magazine, Paraguay edition in February 2015. In it you will find an introduction to virtualization, the use of containers and the new generation of minimalist operating systems for GNU/Linux.
What is virtualisation
Virtualisation is a technology that allows us to create countless virtual machines on a single piece of hardware, be it a PC or a server. A virtual machine is a logical representation of a PC that will share its resources.
The advantage of using this technology is based on the fact that it allows us to optimise hardware resources by consolidating servers and applications, with the consequent saving of money and time in their management.
While in this article we will talk about operating system and application virtualisation, we can also virtualise file systems(GSF, HDFS, DSF), storage (hard disks), databases, software-defined networking (SDN) or network functions (NFV).
Types of virtualisation
We have three types of virtualisation: total (almost total simulation of the hardware in the virtual machine), partial (the software sometimes has to be adapted) and paravirtualisation (the hardware is not simulated).
The three techniques differ in the complexity of implementation, the scope of operating system support and the level of access to common resources. Of these, full virtualisation offers the best performance and scalability compared to the other options.
Components of a virtualised environment
The components of a virtualisation environment are the hypervisor ("virtual machine monitor" or VMM) and the virtual machine ("virtual machine" or VM).
The "hypervisor" is a layer of hardware, firmware or software that functions as a "host", creating and hosting virtual machines. The hypervisor can be "bare metal" running between the hardware layer and the operating system layer (examples are KMV, Oracle VM Server for x86, Citrix XenServer, VMware ESX/ESXi, Microsoft Hyper-V) or "hosted" (VirtualBox, VMWare), hosted within the operating system of that PC (see diagram).

On GNU/Linux, among others, we can install KMV (if our processor supports virtualisation), the open source version of VirtualBox for GNU/Linux or QEMU, among others.
Virtualisation of applications
Lately, platforms for the distribution of applications isolated from the operating system have been born that allow these to be executed inside a container.
Docker is one of them and what it does is to create a container with the libraries and codes of the application so that it can be executed in a virtual machine or in the cloud using the cloud service Docker Hub.
On our PC we can install LXC(see tutorial), Docker or Vagrant to run virtual operating systems or applications on our PC.
Minimalist operating systems
The success of this technology has led to the emergence of a new market, that of minimalist operating systems running inside containers, ideal for virtualised environments. Among them, we can mention Tiny core Linux, RancherOS, and CoreOS.
References:
Dell, Data Center Virtualization. <http://www.dell.com/learn/us/en/555/virtual-data-center>[Accessed 24 March 2015] Wikipedia, Operating-system-level virtualization. <http://en.wikipedia.org/wiki/Operating-system-level_virtualization>[Accessed: 24 March 2015] OpenVZ, Introduction to virtualization. <http://wiki.openvz.org/Introduction_to_virtualization>[Accessed: 24 March 2015]



One response to "Virtualisation and containers in GNU/Linux systems: State of the art"
[...] prerrequisite, you'll need a CentOS 8 virtual machine (it doesn't matter if you use KVM, LXC, VirtualBox or any other virtualization technology) and a basic knowledge of the command line [...]