Containerization
Noun · Development · Origin: 2013
Definitions
Containerization is the practice of packaging an application with its dependencies, libraries, configuration, and runtime into a lightweight, portable unit called a container. Containers share the host operating system's kernel, making them far more efficient than full virtual machines, which each require their own OS. Docker popularized containerization with a simple CLI and Dockerfile format for building images. Container images are versioned, immutable artifacts that run identically across development laptops, CI servers, and production clusters. Orchestration platforms like Kubernetes manage fleets of containers at scale, handling scheduling, scaling, networking, and self-healing. Containerization has become the standard deployment model for microservices and cloud-native applications.
In plain English: Packaging software into self-contained units that include everything needed to run — like shipping containers that work the same way no matter what ship they're on.
Containers differ from virtual machines in a crucial way: VMs virtualize hardware and run separate OS kernels, while containers share the host kernel and only isolate processes. This makes containers far lighter (megabytes vs. gigabytes, seconds vs. minutes to start).
Example: 'We moved from 8 VMs to 40 containers on the same hardware. Each container starts in under a second and uses 50MB of memory instead of 2GB.'
Source: containers vs. VMs
Origin Story
The shipping container metaphor that revolutionized software deployment
Software **containerization** draws its metaphor from Malcolm McLean's standardized shipping containers (1956), which revolutionized global trade. In computing, the idea of process isolation dates to Unix `chroot` (1979) and evolved through FreeBSD Jails (2000), Solaris Zones (2004), and Linux cgroups/namespaces (2006-2008).
**Docker** (2013), created by Solomon Hykes at dotCloud, made containers accessible. Docker's genius wasn't the underlying technology (Linux namespaces and cgroups) but the developer experience: a Dockerfile, a single command to build, and a registry to share images.
Containers solved 'works on my machine' by packaging an application with its entire runtime environment. Kubernetes (2014, from Google's internal Borg system) then solved the problem of orchestrating thousands of containers. Together, they became the foundation of cloud-native computing.
Coined by: Solomon Hykes / Docker (popularized), earlier: FreeBSD Jails, Solaris Zones
Context: Docker, 2013; Kubernetes, 2014
Fun fact: Google's internal Borg system (Kubernetes' predecessor) launches over 2 billion containers per week. When Google open-sourced the concepts as Kubernetes in 2014, it was the most significant technology donation since the release of the Linux kernel.