5 Years ago wrote this article:
Yes, it has given me some grief given the fact 99% of respondents did not read beyond the title and made false assumptions saying I accused these developers for being stupid. Tough luck. You should have read the entire article.
Anyway, in that article I did outline that by using virtualization with the methodology of isolating entire operating systems in a container is a massive waste of resources and the virtualisation engine should have focused on applications and/or business functionality. It took a while for someone to actually jump into this area but finally a new tool has come to life which does exactly that.
Docker is a development platform to be able to package applications and put these in containers to be run on the Docker virtualization engine. This allows elimination of all OS resources inside VM’s from churning on memory, processor time, storage capacity etc etc. There is no need for a hypervisor who has the responsibility of managing all these VM’s and translating systemcalls into host OS or machine commands. Instead you can use a extremely trimmed down Linux kernel of an equally trimmed down Linux distro from RedHat, SUSE or pick the one you want. Install the docker engine and start running your apps. All these apps run in separate containers each enclosing their own binaries and libraries. The abstraction level is done on the docker engine which uses normal system calls to the OS.
No lock in
The additional benefit is that the docker engine is not depending on any hardware architecture. Ever tried to change between x86 to x86_64 and from Intel to AMD or RISC based systems with VMware or KVM. With the current hypervisors there is an enormous amount of hoops and circles you have to go through to be able to switch these technologies and migrate these VM’s to a different architecture. Not so with Docker. If you have a server-farm consisting of x86 CPU’s and you decide to move to x86_64, Itanium, AMD or even ARM, as long as there is an underlying Linux OS capable of running the Docker engine these application containers can run there. This allows for much easier migrations between not only software operating systems but also the underlying hardware architectures.
Obviously when you don’t need the entire operating system started in all these VM’s there is a huge efficiency gain to be obtained. Basically what is needed in the end is business functionality and the majority of applications that previously were only developed on Windows platforms are most of the time widely available on other platforms as well.
The basic applications like databases, email, webservers are widely available but when you look at the “Use Cases” page ont he docker website you also see that Docker is extremely well suited for PaaS services. Companies like E-bay, Spotify are happily harnessing the power and flexibility of Docker. Also well-know search engines like Yandex and Baidu are using Docker for a multitude of functions.
Just as Apple and Google with the respective Appstore and Play, Docker already has a massive ecosystem of pre-defined and “containerized” packages available to start quickly.