Docker
About fifteen years ago, a young startup named dotCloud made a decision that would upend the IT industry. By releasing the code of its containerization engine to the public, the company offered Docker to the world. The way we build, distribute, and run applications would never be the same again. Yet the history of containers doesn’t begin with Docker, far from it.
Let’s go back to 1979. UNIX introduced chroot, a mechanism that allowed changing the root directory of a process. A modest building block that laid the groundwork for an idea: isolating application storage from one another. FreeBSD took a leap forward in 2000 with its jails, providing true system-level virtualization. Linux-VServer followed suit the next year, followed by OpenVZ in 2005. All these technologies explored a similar path: partitioning system resources to compartmentalize applications.
But none really took off. Too complex, too rigid, they remained confined to niche uses. LXC arrived in 2008 and for the first time, there was a complete container manager that relied on the standard Linux kernel, without hacks or risky modifications. Lightweight virtualization was finally accessible, at least in theory.
dotCloud used LXC to run its cloud platform. Its engineers had cobbled together an in-house tool in Python, called “dc”, which was used to manipulate LXC containers. Create, start, stop, expose network ports: the basic functions were there. Except the architecture was problematic. Concurrent access to container metadata created lock conflicts. The system held together, but fragility lurked.
In 2013, Solomon Hykes and his team took the plunge: they released their engine under the name Docker. Docker didn’t just make containers usable, it made them simple. The standardized image format packages an application with everything it needs. Read-only layered stacks allow sharing common parts between images. The Docker Hub registry made sharing images a breeze.
The architecture evolved quickly. Docker broke free from LXC as early as 2014 by developing libcontainer, its own library for communicating with the Linux kernel. No external dependencies, more control, more stability. The technical foundations rested on cgroups that limit resources, namespaces that isolate processes, and storage drivers like AUFS or OverlayFS that manage image layers with finesse.
The modular design took shape. The dockerd daemon exposes the API and orchestrates everything. containerd handles container execution. runc standardizes their creation. This architecture built from blocks allows replacing what doesn’t fit and adapting the tool to specific needs.
Docker’s success raised a question: how to guarantee interoperability? The Linux Foundation launched the Open Container Initiative in 2015 to establish open standards. Docker contributed by providing the specifications of its image format and runc as a reference. That same year saw the birth of the Cloud Native Computing Foundation, which would host Kubernetes, Prometheus, and containerd. The ecosystem structured itself, standards took hold.
In April 2015, Docker raised $95 million in a Series D round led by Insight Venture Partners. Prestigious names joined the venture: Goldman Sachs, Coatue, Northern Trust. Six months later, an additional $18 million came in. The valuation exceeded one billion dollars. Docker became a “unicorn”, all the heavyweights of Silicon Valley were betting on this technology that promised to revolutionize software deployment. The company went through successive funding rounds until reaching nearly $280 million raised. In 2017, a new round brought in $75 million more, pushing the valuation to $1.3 billion.
Docker disrupted practices. A containerized application behaves the same way everywhere: on the developer’s machine, on test servers, in production. Resources consumed remain reasonable, far from the heaviness of traditional virtual machines. Server density improved as a natural consequence.
The company also developed Docker Swarm, its native orchestrator. The idea seemed sound: managing entire fleets of containers distributed across multiple machines while maintaining the simplicity of the Docker API. A few commands were enough to deploy a cluster. No steep learning curve, just a natural extension of what developers already knew. In 2016, Docker integrated Swarm directly into the engine with “Swarm Mode”. It was in the box, ready to use.
Except Google had released Kubernetes in 2014. The fruit of a decade of experience with Borg, its internal orchestration system, Kubernetes grew at breakneck speed. The open source community was on fire. The three major cloud providers adopted Kubernetes: Google of course, but also Amazon with EKS and Microsoft with AKS. VMware and Red Hat rallied to it. By 2017, the battle was already lost for Docker Swarm. Docker’s leadership acknowledged this by announcing that the platform would support Kubernetes. A barely disguised admission of defeat.
Tensions mounted internally. Three CEOs in a single year. The company was flying blind. It had two distinct activities that operated according to incompatible logics: on one side Docker Desktop and Docker Hub, beloved by developers but difficult to monetize; on the other Docker Enterprise, a suite of tools for large enterprises with integrated orchestration, lucrative contracts, but growing complexity.
In November 2019, Mirantis, a cloud specialist looking for direction after the waning of OpenStack, purchased Docker’s entire enterprise business. The transaction included Docker Enterprise Engine, Docker Trusted Registry, Docker Unified Control Plane, the CLI, and 750 large enterprise customers including a third of the Fortune 100. Three hundred employees joined Mirantis. The amount wasn’t disclosed, but it was paltry compared to the $280 million raised. Observers spoke of a fire sale.
The same day, Docker announced $35 million in funding from Benchmark Capital and Insight Partners. Scott Johnston, product director since 2014, became the third CEO of the year. The company restructured, refocused on developers, keeping Docker Desktop and Docker Hub. The team went from several hundred people to about sixty. Many saw it as the end of an era. Commentators declared Docker dead.
Docker and Mirantis agreed to collaborate on open source development. Mirantis committed to supporting Docker Swarm for at least two years, but the message was clear: Kubernetes would be the main orchestrator. The acquisition of Docker Enterprise assets allowed Mirantis to position itself against giants like VMware and Red Hat. Two years after the acquisition, Mirantis announced annual revenue exceeding $100 million, half of which came from assets purchased from Docker. The graft had taken.
For its part, Docker rose from the ashes. Focused on its core business, the company found a growth trajectory again. Annual recurring revenue climbed from $6 million in 2020 to $50 million in 2021, then to over $135 million in 2023. In March 2022, Docker raised $105 million in a Series C round led by Bain Capital Ventures, with a valuation of $2.1 billion. The workforce doubled to reach 150 people. In 2021, Docker Business was born, an offering for large enterprises, and Docker Desktop’s license terms changed. The refocusing bet paid off.
What’s striking about Docker’s story is less the pure technical innovation than the democratization of an idea. Containers existed, but nobody really used them. Docker made them accessible, almost obvious. This simplification paved the way for microservices architectures, accelerated the DevOps movement, and transformed how we think about software deployment.
Components separated, giving users the choice of elements that suited them. New tools constantly emerge to optimize image building, strengthen security, and orchestrate containers. Docker’s legacy lies in the open standards it established, in the foundations it laid for the industry, and in its ability to reinvent itself after nearly disappearing. Docker Inc. still exists, smaller but viable, while Docker technology permeates the entire modern cloud ecosystem.