Skip to content

A bit of Docker history

This page provides a brief history of Docker, highlighting its evolution and significance in the containerization landscape. I also include my personal interpretation of some events related to Docker.

PyCon 2013

In 2013, at the Python programming language conference (PyCon), Solomon Hykes walked onto the stage and revealed Docker to the world for the first time. This project aimed to simplify the process of deploying applications in containers, making it easier for developers to package their applications with all dependencies included. The project was well-received, and it quickly became one of the most influential technologies in the world of containerization.

Docker leverages two features of the Linux kernel: cgroups and namespaces. Cgroups (control groups) allow the kernel to limit and prioritize resources for containers, while namespaces provide isolation for processes, ensuring that each container has its own view of the system, including its own filesystem, network interfaces, and process tree. Together, these features enable the lightweight and efficient virtualization that Docker is known for.

Docker was initially developed as an internal project within dotCloud, a platform-as-a-service (PaaS) startup company founded by Solomon, before it was released as open source and eventually became the primary focus of the company.

Why PyCon?

Docker was presented at the Python programming language conference because it was initially developed in Python. Later Docker was reimplemented in Go, which is an open-source programming language developed by Google. Go is also known as Golang.

Original presentation on YouTube.

Docker's impact

Docker has had a profound impact on the software development and deployment landscape. By popularizing containerization, it has enabled developers to build, ship, and run applications in a more efficient and consistent manner. Docker's emphasis on microservices architecture has also influenced the design of modern applications, promoting greater modularity and scalability.

In my opinion, Docker had a profound impact on Microsoft, too.

Microsoft, which in 2010 was still known for its adversion towards open-source and for its "not invented here syndrome", changed CEO and "felt in love with Linux" shortly after Docker's introduction, and Windows was modified to support Linux and running Docker in the same period, through the Windows Subsystem For Linux (WSL).

Talking about the adversion towards open-source, let's not forget, for instance:

In 2010, our few Pythonistas were flying under the radar {…}. The team was small, leftover from a previous job, but was chipping away at a company culture that suffered from “not invented here” syndrome: Python was a language that belonged to other people, and so Microsoft was not interested.

From Wikipedia

"Embrace, extend, and extinguish" (EEE), also known as "embrace, extend, and exterminate", is a phrase that the U.S. Department of Justice found was used internally by Microsoft to describe its strategy for entering product categories involving widely used open standards, extending those standards with proprietary capabilities, and using the differences to strongly disadvantage its competitors.

The strategy and phrase "embrace and extend" were first described outside Microsoft in a 1996 article in The New York Times titled "Tomorrow, the World Wide Web! Microsoft, the PC King, Wants to Reign Over the Internet", in which writer John Markoff said, "Rather than merely embrace and extend the Internet, the company's critics now fear, Microsoft intends to engulf it." The phrase "embrace and extend" also appears in a facetious motivational song by an anonymous Microsoft employee, and in an interview of Steve Ballmer by The New York Times.

Satya Nadella became the CEO of Microsoft in February 4, 2014, succeeding Steve Ballmer. Satya Nadella first publicly declared that "Microsoft loves Linux" during a press and analyst briefing where he used a slide with the message "Microsoft ❤️ Linux". This happened a few months before May 6, 2015, when a Microsoft blog post highlighted the shift in the company's approach to Linux and open source. The specific date of the initial statement is not explicitly mentioned in the provided context, but it occurred shortly after Nadella became CEO in February 2014.

While other factors certainly contributed to this change, I believe that Docker played a significant role in this shift, and that someone at Microsoft realized that Docker was a game-changer that could not be allowed to be a Linux-only technology, unsupported on Windows.

Connecting dots...

Linus Torvalds creates Linux 🐧

1991

Linux was invented in 1991 by Linus Torvalds. He began developing the Linux kernel, the core of the operating system, while a student at the University of Helsinki. The first version, 0.02, was released that year, with version 1.0 following in 1994.

Embrace, extend, and extinguish

1996

"Embrace, extend, and extinguish" (EEE), also known as "embrace, extend, and exterminate", is a phrase that the U.S. Department of Justice found was used internally by Microsoft to describe its strategy for entering product categories involving widely used open standards, extending those standards with proprietary capabilities, and using the differences to strongly disadvantage its competitors. Source.

Steve Ballmer calls Linux a "cancer"

2001

In 2001, former Microsoft CEO Steve Ballmer famously described Linux as "a cancer that attaches itself in an intellectual property sense to everything it touches". Even worse, he said: "we have a problem {…} when the government funds open-source work.". These statements were part of Microsoft's broader anti-open source stance at the time.

Solomon Hykes creates Docker

2013

Solomon Hykes walked onto the stage at PyCon 2013 (Python conference) and revealed Docker to the world for the first time. Docker is one of the most influential technologies in the world of containerization. Docker enables developers to automate the deployment of applications inside lightweight, portable containers. Docker revolutionized the way applications are built, shipped, and run, making it easier to create consistent environments across development, testing, and production. Docker uses two features of the Linux kernel: cgroups and namespaces. In its first version, Docker is only supported on Linux.

Satya Nadella becomes the CEO of Microsoft

2014

Satya Nadella becomes the CEO of Microsoft, since February 4, 2014, succeeding Steve Ballmer. Under his leadership, Microsoft begins to embrace open source technologies and cloud computing, marking a significant shift in the company's strategy.

Microsoft falls in love with Linux 😏

2014

Microsoft began to embrace open source more openly. Satya Nadella famously stated, "Microsoft loves Linux," signaling a major shift in the company's strategy. Probably somebody at Microsoft realized that a technology like Docker could not be left to the Linux community alone, and that Microsoft had to embrace it.

Kubernetes is released

2015

Kubernetes is released by Google as an open-source container orchestration platform, for Docker containers. It provides a powerful framework for automating the deployment, scaling, and management of containerized applications. Kubernetes quickly becomes the de facto standard for container orchestration, widely adopted across the industry. Kubernetes was initially strongly coupled to Docker. At that time, Docker was the primary container runtime used by Kubernetes for managing containerized applications. Over time, Kubernetes evolved to support multiple container runtimes through the Container Runtime Interface (CRI), reducing its dependency on Docker.

Windows Subsystem for Linux (WSL)

2016

Windows Subsystem for Linux (WSL) was first announced at BUILD in 2016 and first shipped with the Windows 10 Anniversary update. WSL is a compatibility layer for running Linux binary executables natively on Windows 10 and Windows Server 2019. It allows developers to run a Linux environment directly on Windows without the need for a virtual machine or dual-boot setup. WSL provides a Linux-compatible kernel interface and supports running Linux distributions such as Ubuntu, Debian, and others directly on Windows. This enables developers to use Linux command-line tools, utilities, and applications alongside their Windows applications, making it easier to develop and test cross-platform applications.

Connecting dots

By staying informed about events and analyzing patterns, we can gain insights into their causes and make informed predictions.

Docker and Kubernetes

Docker has continued to evolve since its initial release, with significant updates and enhancements over the years.

The CRI (Container Runtime Interface) standard emerged as a way to decouple Kubernetes from specific container runtimes like Docker, allowing for greater flexibility and standardization. Initially, Kubernetes relied on Docker directly, making it difficult to integrate new runtimes. CRI provided a standardized interface for kubelet to communicate with any compliant runtime, promoting interoperability and encouraging the development of new container engines.

Here's a more detailed breakdown:

Early Kubernetes and Docker: Kubernetes initially relied heavily on Docker for containerization. This tight coupling made it challenging to switch container runtimes or integrate new ones.

The Need for Standardization: To address this, the Container Runtime Interface (CRI) was introduced in Kubernetes 1.5. CRI aimed to provide a consistent way for Kubernetes to interact with various container runtimes.

Docker's Complexity: Docker is more than just a container runtime; it's a suite of tools for building, managing, and running containers. Kubernetes focuses on the core container runtime aspect.

Dockershim and its Removal: Because Docker wasn't originally designed with CRI in mind, Kubernetes used a "shim" called Dockershim to bridge the gap. However, Docker's internal architecture, including containerd, already supported CRI functionality. Eventually, Kubernetes deprecated and removed Dockershim, encouraging users to switch to CRI-compliant runtimes like containerd or CRI-O.

Benefits of CRI: The introduction of CRI brought severalbenefits:

  • Enhanced Flexibility: Kubernetes users could now easily switch between different container runtimes without significant code changes.
  • Improved Interoperability: CRI promoted compatibility across various container runtimes and tools. Focus on Core Runtime: Kubernetes could focus on the core container runtime aspects, leaving higher-level functionality to other tools.
  • Modern Container Runtimes: Today, runtimes like containerd and CRI-O are widely used with Kubernetes, offering a more streamlined and standardized approach to container management.

Podman

Podman and Docker are both popular containerization tools, but they differ in their underlying architecture and approach to security. Docker relies on a daemon (a background process) to manage containers, while Podman is daemonless, allowing for rootless container execution and stronger isolation. This difference in architecture impacts how each tool handles security, resource management, and integration with other systems.

Podman was created by Red Hat, along with the open-source community.

Podman's development was partly driven by the desire for a daemonless container engine, which offers a different architectural approach compared to Docker. This daemonless design aims to improve security and resource efficiency. It's a core component of Red Hat's container strategy and is used in various Red Hat products like Red Hat Enterprise Linux (RHEL). Podman's development continues to be driven by Red Hat and the open-source community, with ongoing efforts to enhance its functionality and performance.