1. What is a Docker?
Docker is an Open-Source project that can package an application and its
dependencies in a virtual container that can run on any Linux server (soon will
be on windows as well). This helps enable flexibility and portability on where
the application can run, whether on premise, public cloud, private cloud, bare
metal, etc.
So what is inside the container? a Docker container wraps up everything your app
need to run: your code, your runtime, system tools, system libraries. This
guarantees that it will always run the same, regardless of the environment it is
running on.
Docker uses resource isolation features of the Linux kernel such as cgroups and
kernel namespaces to allow independent "containers" to run within a single Linux
instance, avoiding the overhead of starting and maintaining virtual machines.
A May 2015 analysis showed the following organizations as main contributors to
Docker: Red Hat (the biggest contributors, contributing even more than the
Docker team itself), the Docker team, IBM, Google, Cisco Systems and Amadeus IT
Group.[31]
On October 15, 2014, Microsoft announced integration of the Docker engine into
the next (2016) Windows Server release, and native support for the Docker client
role in Windows.
On December 4, 2014, IBM announced a strategic partnership with Docker that
enables enterprises to more efficiently, quickly and cost-effectively build and
run the next generation of applications on the IBM Cloud.[39]
Lightweight
Containers running on a single machine all share the same operating system
kernel so they start instantly and make more efficient use of RAM. Images are
constructed from layered filesystems so they can share common files, making disk
usage and image downloads much more efficient.
Open
Docker containers are based on open standards allowing containers to run on all
major Linux distributions and Microsoft operating systems with support for every
infrastructure.
Secure
Containers isolate applications from each other and the underlying
infrastructure while providing an added layer of protection for the application.