Docker's History

Docker's History from dotCloud to the Open Container Initiative

Docker 514 made decades of kernel work usable with one command. Unix V7 added chroot in 1979; FreeBSD jails (2000) and Solaris Zones (2004) added separate process and network views. Linux gained mount namespaces in 2002, then the other namespaces, and control groups, contributed by Google engineers and merged in Linux 2.6.24 in January 2008. LXC (2008) combined them, but still meant long configuration files and root-level plumbing.

Solomon Hykes built Docker inside dotCloud, a platform-as-a-service startup, and showed it in a five-minute lightning talk at PyCon in March 2013; it was open-sourced that month, and dotCloud renamed itself Docker, Inc. that year. Its insight was the image: a layered, versioned filesystem with a default command, pushed to and pulled from a registry.

From chroot to Docker Engine 29: the milestones behind containers
From chroot to Docker Engine 29 514 : the milestones behind containers

Docker 0.9 (10 March 2014) replaced LXC with libcontainer, a Go library calling the kernel directly, and Docker 1.0 followed on 9 June 2014. To head off a split with rivals such as CoreOS's rkt, Docker, CoreOS and others launched the Open Container Initiative on 22 June 2015, and Docker donated libcontainer as the runc 13,463 runtime. The OCI maintains the Runtime, Image and Distribution Specifications (OCI Specifications). Docker donated containerd 234,762 to the CNCF in March 2017 (graduated February 2019), moved open development into the Moby project, sold its enterprise business to Mirantis in November 2019, and began charging larger companies for Docker Desktop 514 on 31 August 2021. Kubernetes 1.24 5,150 removed dockershim in May 2022, which changed nothing for images: a Docker-built image is an OCI image.