Docker is barely three years old, which makes it seem like a new, relatively unproven technology. But viewed from the perspective of the long history of containers and microservices, Docker is actually a very established technology. Here’s why.
Docker’s newness is an important consideration for enterprises deciding whether to migrate to Docker containers. Few businesses want to bet their production workloads on a technology that, if it were a child, would still be only about halfway between birth and kindergarten.
The Longtail History of Docker Containers
There’s no denying that Docker, which was launched publicly in 2013, is a young platform. But the ideas that culminated in Docker stretch back much further.
Consider the following major technological developments that helped make Docker possible:
- Object-oriented programming. Object-oriented programming debuted in the 1960s and went mainstream a decade later. Object-oriented programming is not the same thing as containers, of course. But conceptually, it’s related. Object-oriented programming is all about breaking code down into modular, easily manageable chunks, just as containers help you break applications down into discrete services.
- Microkernels. If you were into programming in the 1980s or early 1990s (or have just read about it in history books), you know that microkernels were once all the rage among operating system designers. Microkernels broke operating system kernels down into microservices, an architecture similar to a containerized, microservices-based application. They never really caught on outside of academia (Linus Torvalds wrote that microkernels were “essentially a dishonest approach aimed at receiving more dollars for research,” and listed a microkernel architecture among the “brain-damages” he found in the Minix operating system). But microkernels nonetheless were evidence of the type of thinking that led to Docker.
- Service-oriented architecture (SOA). SOA, which was popular in the 2000s, emphasized designing apps to run as a set of discrete, interchangeable and reusable services. Those services usually were hosted by cloud-based distributed systems or clusters, rather than containers. Like microkernels, SOA saw only limited success. But in many ways, it was a direct forerunner to microservices apps hosted by Docker containers.
- Linux Containers. Docker in its initial incarnation was basically an extension of Linux Containers, or LXC. LXC has existed since 2008. It never became nearly as popular as Docker (which is no longer based on LXC), but LXC—which became the foundation for LXD, Canonical’s system container platform—is an established, tried-and-true technology.
Measured against this long path of historical evolution, Docker seems somewhat less brand-new and risky. Sure, Docker is different in many ways from these technologies—and a production-ready Docker stack has many more components than just microservices.
At its core, however, the concept behind Docker is a concept that has existed in the technology world for decades. In this sense, the Docker ideology—if not the Docker platform itself—is well-established and vetted.