Have a long enough career in the IT industry, and you’ll eventually realize that everything old is new again. Decades-old concepts often reemerge in a new and improved form to become the next hot technology. Like virtual machines (VMs) before them, containers are the latest application packaging and isolation technology to captivate and reshape the industry. Application containerization, or sandboxing, is an old idea, first implemented almost 40 years ago in AT&T Unix via the chroot command. While primitive by today’s standards, chroot provided process isolation by changing the root context and execution environment of an application to a particular directory tree while prohibiting access to the remaining file system.
Evolution of Containers
Chrooted applications running on the same system share an OS; however, they can’t interact with each other or the OS itself outside of user mode system or networking calls. Over the years, other forms of isolation were created, including FreeBSD Jails, Solaris Zones, and cgroups. Today’s container technology is a direct evolution of these early Unix capabilities. While vastly more capable, today’s technology is conceptually similar by virtue of containers sharing an OS, but having wholly isolated processes, (virtual) networks, and storage environments.
Arguably, Google is most responsible for bringing containerization into the cloud era as a viable alternative to bare metal (type 1) hypervisors through its development of generic process containers on Linux, allowing applications to share system resources while maintaining process isolation and resource control. The technology evolved and was popularized by the Docker container runtime engine and packaging format that became the basis for the Open Container Initiative (OCI) and its runtime and image standards.
Google is also the genesis for another foundational container technology, the Kubernetes orchestration engine. Kubernetes is an evolution of the Borg cluster manager developed by Google to schedule thousands of applications across its massive infrastructure. Like Docker, Kubernetes is the basis for another industry standardization effort, the Cloud Native Computing Foundation (CNCF), which has become the nonpartisan home for Kubernetes and other cloud- and vendor-agnostic open source projects.
Who’s Using What?
Container standardization efforts illustrate a maturing technology that has become a foundational element of enterprise infrastructure and application deployment strategies. A 2019 state of the cloud survey from RightScale found that 66 percent of enterprises that use container tools are using Docker, with 60 percent using Kubernetes. Out of all respondents, 57 percent are using Docker and 48 percent are using Kubernetes. However, out of all respondents that do not use containers yet, more are planning to use Kubernetes than Docker. In the time between the 2018 and 2019 surveys, Kubernetes grew immensely in popularity, rising from 27 percent of respondents using it, to 48 percent. Docker only grew 8 percent during the same period.
Further evidence that enterprise container adoption is well past the evaluate-and-test stage is a 2018 survey from Sysdig of existing container users, which found that the average density on container hosts increased by 50 percent, and one quarter of the applications deployed in containers are database solutions.
Containerization has become an invaluable component of enterprise infrastructure. Major providers of enterprise infrastructure software, such as Microsoft, VMware, Red Hat, and Nutanix, have incorporated containers into their core products. Major cloud services, such as AWS, Azure, Google Cloud, and IBM, offer (and are continually enhancing) container services.
Updated April 2019