Docker is not a complete virtualization technology, but has features that, if developed; could compete in hypervisor such as VMware. When we talk about virtualization, always we include the classic examples of hypervisors such as VMware and Hyper-V and, although less frequently; technologies like Xen and KVM. In this list of virtualization technologies, almost never include Docker and the packaging system, reserving this platform to a separate discussion about which we talked before.
Docker and Virtualization : Not Real Virtualization!
In fact, Docker should be mentioned among the virtualization systems, but on the other hand there is difficulty to assimilate VMware and other hypervisor with Docker, for some technological differences, it simply neither can not be overlooked nor can be added in a classification easily.
First of all, Docker uses LXC Linux container virtualization to create containers that allows sharing of applications. These packages, which are not real virtual machines, they work only in environments such as Linux RHEL and Ubuntu and can only run Linux applications, leaving out the fact of the whole host of applications that can run on Windows and other operating systems. These are located in the hypervisor instead for its ideal execution environment.
Similarly, hypervisors such as VMware are able to deal in a sophisticated way to store an entire infrastructure hardware, configure and run multiple virtual machines, allow migration between hosts, to create cluster HA configuration and so on, showing the muscles on one of the aspects that differentiates hypervisors such as VMware – the years of development and experience accumulated in the field.
Advantages of Docker Compared to Traditional Virtualization
Yet, Docker, although still can not compete with the traditional hypervisor, however, presents peculiar connotations, that bode well for the further development of technology into the platforms mentioned in virtualization itself. For example, Docker share the Linux kernel of the host machine. This feature is an advantage of no small importance and to understand it, let us try to think of a practical example.
If we have 10 VM, 10 GB each, these will occupy the host machine an amount of resources equal to 100 GB. If we take a 10 GB package Docker and create others instances on the same host machine, ten of these packages (and maybe even 100) will never occupy an amount of resources equal to or greater than 100 GB, because they share the same kernel.
In practice, there is always a single operating system shared by all the packages and in each package there is nothing but a small application and the operating environment. In practice, a host can run multiple Docker containers somewhat irrespective of the fact – how many real virtual machines we can accommodate on one machine.
In addition, the slenderness of the Docker packages ensures lower boot time and performance, a better chance of sharing between different teams of developers on the public cloud, such as those maintained by Amazon and Rackspace.
At the end, Docker is a very interesting technology for the peculiarities which it shows, but it still needs to be further developed to ensure the full functionalities of virtualization softwares.