What is Docker and his containers?

in #linux7 years ago

A new way to virtualize

To answer this question we need to start explaining how a in general servers work.

In a physical server (not virtualized) we have only one Operating System (OS) that manages the RAM, CPU and IO (disk and other parts) using the Kernel which is a key part in this structure. Above this OS will be installed all applications, the user access and all that we can use.
On the diagram below we can see, in a simplified way, this architecture.
linux_os.jpg

With the old virtualization (Virtual Machines) we could be capable of running more than one OS in the same physical machine. The guest Operating Systems run above the host OS. They are, in terms of architecture, as a full server inside another. They containing their own kernel, libraries, and drivers necessary to make it work.
We can see this on the image below in the left side.

On the container architecture (in ou case Docker) it only uses one Kernel reducing, as we can think, all the complexity and resources like RAM an CPU. The applications inside the container only use a subset of libraries and inherit all the rest from the kernel of the Host OS. Neat and powerfull, right?

Below we have a comparison between Virtual Machines and Containers.
docker-and-puppet-for-continuous-integration-21-638.jpg

With this architecture we can have lean small containers with only the applications we need. There are examples for a webserver with only a few Megabytes.
With this new technology we can escalate the number of servers/instances with our app. And In a way it's unimaginable with Virtual Machines.

I hope I've attracted Your attention to this.
Soon I'll post more of what this technology can offer.