What is Docker?
Simply put, Docker is a "container" for programs written by the Go language (Linux containers, LXCS); The cornerstone of cloud services today is operating system-level isolation, virtual multiple hosts on the same physical server. Docker implements an application-level isolation, which changes our basic development and operation units, which are directly manipulated by virtual hosts (VMS) to the "containers" in which the operating program runs.
Docker is an open platform designed for developers and system administrators to publish and run distributed applications. Consists of two parts:
Docker Engine: A portable, lightweight running environment and package Manager. (Note * Single OS vs single thread, is it special like Nodejs?) )
Docker Hub: A cloud service created for creating automated workflows and sharing apps. (Note * Cloud image/Package Management vs NPM package management, is it special like NPM?) )
From March 20, 2013, the first version of Docker officially released to June 2014 Docker 1.0 officially released, after 15 months. Although the development process is very short, Docker is getting more and more popular trend.
In fact, container technology is not the innovation of Docker, HeroKu, Nodejitsu and other cloud service providers have adopted similar lightweight virtualization technology, but Docker is the first to make this kind of container technology large-scale open-source and widely accepted by the community.
The good part
The advantages of Docker with respect to VM VMS are obvious: lightweight and high performance and convenience, and the following is excerpted from the KVM and Docker LXC benchmarking with OpenStack
Fast
Performance at runtime can be greatly improved (classic case is 97% increase)
Administrative operations (Start, stop, start, restart, and so on) are all in seconds or milliseconds.
Agile
As agile as a virtual machine and cheaper, it's as simple as a button on bare metal (bare metal).
Flexible
"Containerized" applications and systems without adding additional operating systems,
Light weight
You will have enough "OS" to add or decrease the image. You can 100~1000 a containers container on a single server.
Cheap
Open source, free, low cost. Supported and driven by the modern Linux kernel. Note * Light weight container must be able to open more "containers" on a physical machine, destined to be cheaper than VMS.
Eco-System
are getting more and more popular, just look at Google Trends and know that Docker or LXC.
There are countless community and third-party applications.
Cloud Support
Countless cloud services provide a framework for creating and managing Linux containers.
The benefits of Docker performance can also be referenced by this IBM Engineer's performance improvement Assessment, which has been greatly improved in all aspects than VMS (OS System level virtualization).
Performance characteristics of VMs vs Docker Containers by Boden Russel (IBM)
Performance characteristics of traditional V MS vs Docker Containers
A part of the argument
Any project will be controversial, like go, like Nodejs, and Docker has some.
can be completely isolated
In a hyper-complex business system, can the single OS be completely isolated, or will a program crash/memory overflow/high CPU usage affect other containers or the entire system? Many people have doubts about whether Docker can support mission-critical systems in a real-world multi-master production environment. Note * Just as someone questioned the node. JS single thread is fast and unstable and cannot be applied in complex scenarios.
Fortunately, the Linux kernel has made a lot of improvements to container to support better isolation.
The go language is not fully mature yet
Docker is developed by the go language, but the go language is unfamiliar to most developers, and it's still improving, and it's still a long way from being mature. This half-git, half-pack management approach has made some people uncomfortable.
Controlled by private companies
Docker is designed by a privately owned company called DotCloud, and the company is for profit, for example, you have no way to use the source code to Yi Docker projects, only the Docker binaries that are made with black boxes, which may not be completely free in the future. Docker is now offering enterprise-class services (consulting, support, and training) for the company.