What is the Docker?

Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.

Docker comes with LXC feature added to Linux kernel. Docker allows the isolation and operation of the containers with the LXC at the operating system level. In later periods, LXC removed its dependency and re-encode LXC in its own form to create a new technology called libcontainer.

Containers behave like a virtual machine. To the outside world, they can look like their own complete system. But unlike a virtual machine, rather than creating a whole virtual operating system, containers don’t need to replicate an entire operating system, only the individual components they need in order to operate. This gives a significant performance boost and reduces the size of the application. They also operate much faster, as unlike traditional virtualization the process is essentially running natively on its host, just with an additional layer of protection around it.

This technology has become more popular with using at companies like Google, IBM and Microsoft. The docker system is more flexible than the virtual machine, and completely free,that makes the docker very common.

Containers ensure that applications run in the event of migration to another server or partner. Containers do this by abstracting the application from system resources (network, depletion, etc.).

Containers can be created with text-based Image definitions. A created container can be shared with others via the Docker Registery.

The docker uses client / server architecture as seen below. Docker client communicate with docker daemons. Communication can be via socket or restful API.

Hypervisor means exactly Docker daemon. Ensures that containers are isolated from each other and uses and distributes resources.

The Docker client has a set of commands for users to talk to the Docker Daemon. It can be on the same machine with the Daemon or on a remote machine.

Docker Registery allows Docker Images to be stored and accessed by other users in a public / private way. Images are tagged so different versions of the images can manage.

The Docker creates a standard by allowing applications to run in the same way on different platforms, enables them to use resources more efficiently.