A Decade of Docker Containers

Anil Madhavapeddy, Dave Scott, and Justin Cormack. In Communications of the ACM. .Anil MadhavapeddyDavid J. ScottJustin Cormack

A Decade of Docker Containers

Abstract

Docker is a widely used developer tool that simplifies building, shipping, and sharing application stacks. Since Docker’s release in 2013, it has seen rapid adoption and is used by a majority of professional software developers.

In this article, we (Docker maintainers) explain it from a technical perspective, beginning with its origins on Linux and subsequently how we rebuilt it to support macOS and Windows while remaining just as user friendly.

Docker has incorporated a lot of systems research in its goal of becoming an “invisible” developer companion, and we discuss how hypervisors, kernel namespaces and technology from the dialup era have all solved difficult integration problems as the userbase rapidly grew.

The Docker project also remains at its heart one of the most successful open source developer communities in the recent era, with a once-monolithic system now split into standardized and well specified components that are independently developed. Today, developer workflows are rapidly evolving with agentic assistance and sensitive datasets, and we discuss how Docker is adapting to support these use cases.