Up until now, we have seen how Docker works regarding the overall architecture, but what happens at the operating system level in the Docker daemon?
Roughly explained, Docker provides you with only a runtime for your applications: you can limit the number of cores and the amount of memory to be used by the container, but at the end of the day, the kernel running your container is going to be the same as the kernel running your host machine.
The proof of that is in the way Docker organizes images: it calculates filesystem differences and packs them in layers that can be reused. Let's pull a fairly big image (not the hello-world from the preceding example):
docker pull ubuntu
This will produce the following output:
Using default ...