Docker is a container technology that lets you run more apps than ever on your servers. This technology is now widely used even if it has made to 1.0 very recently. So far, Docker counts 2.75 millions downloads and is used by large software editors such as Microsoft, which is neat for a 1.5 years open source technology.
Compared to VM hypervisors like Hyper-V, KVM, Xen, container technologies like Docker run on a single OS. VM hypervisors emulate hardware on a Guest OS hosted by a common OS, which tends to consume more resources than many isolated containers sharing a single OS.
James Bottomley, Parallels‘ CTO of server virtualization and a leading Linux kernel developer, explains that hypervisors all have one thing in common: “They’re based on emulating virtual hardware”. With Docker containers you can “leave behind the useless 99.9% VM junk, leaving you with a small, neat capsule containing your application”. With a perfectly tuned container system, “you can have as many as four-to-six times the number of server application instances as you can using Xen or KVM VMs on the same hardware”.
If you want to run different OS instances, containers are not the best way to go, and you will prefer VMs.
Containers are nothing new. They date back from 2000s and FreeBSD Jails. Docker is built on top of Linux Containers (LXC). Docker juste makes it easier to deploy and safer than previous technologies. Docker can be integrated within Puppet, Chef, and even development virtual machines like Vagrant.
Thanks to an agreement with its competitors Red Hat and Parrallels on an open-source component, libcontainer, Docker containers are now standardized. Engineers from theses companies work together on this component, along with Ubuntu container engineers.
Simply, Dockers let you run multiple applications on a single server with a single OS, and spares you a tedious and costly VM configuration. It is easy to develop and deploy on Dockers containers, and the underlying container technology developed by Docker is on now standardized and maintained by developers from large companies. The fact that you can run more containers on a server than you can do with VM saves millions in hardware and power.