When we talk about containers, we are indirectly referring to two main concepts—a container image and a running container image.
A container image is the definition of the container, wherein all software stacks are installed as additional layers, as depicted by the following diagram:
A container image is typically made up of multiple layers.
The first layer is given by the base image, which provides the OS core functionalities, with all of the tools needed to get started. Teams often work by building their own layers on these base images. Users can also build on more advanced application images, which not only have an OS, but which also include language runtimes, debugging tools, and libraries, as shown in the following diagram:
Base images are built from the same utilities and libraries that are included...