Containers serve as the base common denominator for the cloud native computing. They offer a universal platform to package software programs so they can be easily moved around to different systems, even those with different architectures.
Like any modern technology, containers have actually been around for decades. FreeBSD offered “jails” in the early 2000s, and Solaris containers were a key part of offering secure, flexible platforms for applications running on Sun Micrososystems’ own Unix platform. In 2008, the idea of container became a core part of the Linux kernel with the introduction of LXC (LinuX Containers), implemented with cgroups and Linux namespaces.
While LxC was used by Google to manage its own infrastructure, it wasn’t until the advent of Docker, nuanced in 2013, did developers embrace the abstraction, because it gave them an easy way to move software from development to production without any manual restaging. Mass-use of containers spurned development of container orchestraters such as Kubernetes and Docker Swarm.
Although Docker open sourced its container technology, additional effort has gone on to move the technology to independent open source governance, by way of projects such as runC, Containerd and the Moby Project. Additionally, more work has been undertaken to build containers that are both more secure and performant, such as Kata Containers.