Starting with LXC/LXD images
Early container images used plain archives of an entire directory for deployment. In 2006, Google engineers started to experiment with a new kernel feature they called process containers. This feature was renamed control groups and added to the mainline Linux kernel in v2.6.24. These control groups provided a global way to limit resources for a group of processes, including CPU, memory, and storage resources, in a way that’s not available to the existing mechanism of chroots. The kernel feature itself was fairly straightforward but image management turned out to be the main challenge of containers.
What if you wanted more than a single directory archive for an application container? Orchestrators added the ability to cluster containers and also the ability to distribute multiple containers in groups. This is where Google’s Borg and the Kubernetes concept of a pod originates. Fun fact: the name pod comes from a group of whales, and the Docker...