If you are in the data center or cloud computing IT circle, you should have been hearing about ordinary containers, especially Docker, for more than a year, and the news about them has never stopped. After Docker 1.0 was released in June 2014, its momentum reached an unprecedented level.
The reason for such a big stir is that many companies are adopting Docker at an astonishing rate. At the OSCon (Open Source Convention) in July 2014, I met countless enterprises that had already moved server applications from virtual machines (VMs) to containers. Indeed, James Turnbull, vice president of services and support at Docker, told me at the conference that three major banks had been using Docker's beta version and were now using Docker in production. For any early technology, this is undoubtedly a very confident move, especially since it is almost unheard of in the security-first financial world.

At the same time, Docker, an open source technology, is not just a darling in the eyes of Linux giants like Red Hat and Canonical. Proprietary software companies such as Microsoft are also warmly embracing Docker.
So why is everyone chasing containers and Docker? James Bottomley is the chief technology officer of server virtualization at Parallels and a well-known Linux kernel developer. He explained to me that hypervisors such as Hyper-V, KVM, and Xen are all "based on virtualized hardware emulation mechanisms. This means they have high system requirements."
However, containers use a shared operating system. This means they are much more efficient in using system resources than hypervisors. Instead of virtualizing hardware, containers reside on a single Linux instance. This in turn means you can "discard useless 99.9% of virtual machine junk, leaving a small, neat capsule-like container containing your application," said Bottomley.
According to Bottomley, with a fully tuned container system, you can have four to six times as many server application instances on the same hardware as you would with Xen or KVM virtual machines.
Doesn't that sound great? After all, you can run many more applications on the server. So why hasn't anyone done this before? Actually, someone has. Containers are actually an old concept.
Containers can be traced back to at least 2000 and FreeBSD Jails. Oracle Solaris also has a similar concept called Zones; companies such as Parallels, Google, and Docker have been working on open source projects like OpenVZ and LXC (Linux Containers) to make containers run smoothly and securely.
Indeed, few people know about containers, but most people have been using containers for years. Google has its own open source container technology lmctfy (Let Me Contain That For You). As long as you use a Google feature, such as search, Gmail, Google Docs, or anything else, a new container is allocated.
However, Docker is built on top of LXC. Like any container technology, as far as the application is concerned, it has its own file system, storage system, processor, memory, and other components. The main difference between containers and virtual machines is that hypervisors abstract the entire device, while containers only abstract the operating system kernel.
This in turn means: one thing a hypervisor can do that containers cannot is use different operating systems or kernels. So, for example, you can use Microsoft Azure to run instances of Windows Server 2012 and SUSE Linux Enterprise Server at the same time. As for Docker, all containers must use the same operating system and kernel.
On the other hand, if you just want to run as many server application instances as possible on as little hardware as possible, you may not care much about running multiple OS virtual machines. If multiple copies of the same application are exactly what you need, then you will love containers.
The move to Docker is expected to save data centers or cloud computing service providers tens of millions of dollars in electricity and hardware costs each year. So no wonder they are rushing to adopt Docker as soon as possible.
Docker brings several new features that previous technologies did not have. First, compared with previous methods, Docker makes containers easier and safer to deploy and use. In addition, because Docker has cooperated with other giants in the container field, including Canonical, Google, Red Hat, and Parallels, to jointly develop its key open source component libcontainer, it brings much-needed standardization to containers.
At the same time, developers can use Docker to package, deliver, and run any application. The application becomes a lightweight, portable, self-sufficient LXC container that can run anywhere. As Bottomley told me, "Containers give you immediate application portability."
Jay Lyman, senior analyst at market research firm 451 Research, added: "Organizations strive to make applications and workloads easier to port and distribute in an efficient, standardized, repeatable way, which is sometimes difficult to achieve. Just as GitHub promotes collaboration and innovation through shared source code, Docker Hub, Official Repos, and commercial support are also helping many enterprises address this challenge by improving the way applications are packaged, deployed, and managed."
Last but not least, Docker containers are easy to deploy to the cloud. As Ben Lloyd Pearson wrote on opensource.com: "Docker takes a special approach so that it can be integrated into most DevOps (development operations) applications, including Puppet, Chef, Vagrant, and Ansible, or can be used alone to manage development environments. The main selling point is that it simplifies many of the tasks usually performed by these other applications. Specifically, with Docker, people can build a local development environment identical to the live server, run multiple development environments from the same host (each with unique software, operating system, and configuration), test projects on new or different servers, and allow anyone to work on the same project with identical settings, regardless of the local host environment."
In short, what Docker can do for you is: compared with other technologies, it allows more applications to run on the same hardware; it makes it easy for developers to quickly build ready-to-run containerized applications; it greatly simplifies the tasks of managing and deploying applications. All in all, I can understand why Docker, as an enterprise-level technology, has become popular all of a sudden. I just hope it lives up to expectations; otherwise, there will be some worried CEOs and CIOs out there.
Source: http://cloud.51cto.com/art/201410/453718.htm