{"id":536,"date":"2026-09-06T00:55:24","date_gmt":"2026-09-06T03:55:24","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2026\/09\/a-historia-do-docker\/"},"modified":"2026-09-08T07:56:01","modified_gmt":"2026-09-08T10:56:01","slug":"a-historia-do-docker","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/en\/2026\/09\/a-historia-do-docker\/","title":{"rendered":"The history of Docker: the whale that packaged software"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro empilhando um cont\u00eainer no cais, com a baleia do Docker carregando a carga\" src=\"\/wp-content\/uploads\/2026\/09\/docker-historia-v2.webp\" width=\"1052\" height=\"652\" \/><\/p>\n<p>In March 2013, in a five-minute lightning talk at PyCon in Santa Clara, Solomon Hykes showed what dotCloud used underneath its PaaS. The name was Docker. On 20 March the code was opened. In June 2014 version 1.0 arrived. Thirteen years later Docker Engine 29.8.0 (3 September 2026) is still the most common way to package a Linux process \u2014 even after the fleet orchestrator became <a href=\"\/en\/2026\/09\/a-historia-do-kubernetes\/\">Kubernetes<\/a> and the underlying runtime became containerd.<\/p>\n<p><!-- more --><\/p>\n<h2>dotCloud, YC, and an internal engine<\/h2>\n<p>Kamel Founadi, Solomon Hykes, and Sebastien Pahl founded dotCloud at Y Combinator in the summer of 2010. The product, launched in 2011, was PaaS: you sent code, the platform stacked up the runtime. Underneath was a container engine nobody saw. Hykes, a Frenchman, had attended Epitech and spent some time in the US. The insight was not \u201cinventing the container\u201d \u2014 LXC, cgroups, and namespaces were already in the kernel. The insight was the <em>experience<\/em>: a recipe file, a stackable image, one command to run the same way on any Linux system.<\/p>\n<p>The metaphor came from the port. Shipping containers: ISO standard, stackable, transferable between ships without repacking the cargo. Software deserved the same. The blue whale with boxes on its back \u2014 Moby Dock \u2014 became the mascot. In October 2013 the company dropped the dotCloud name and became Docker, Inc. The PaaS was sold. The engine became the product.<\/p>\n<h2>PyCon 2013: five minutes that changed deployment<\/h2>\n<p>The talk was called \u201cThe future of Linux Containers\u201d. Five minutes, demo, applause. On 20 March 2013 the code was opened. At first the default runtime was LXC. In March 2014, in 0.9, Docker replaced LXC with <code data-no-translation=\"\">libcontainer<\/code>, written in Go, talking directly to cgroups, namespaces, capabilities, and apparmor\/selinux. Fewer dependencies, more control. The high-level API \u2014 <code data-no-translation=\"\">build<\/code>, <code data-no-translation=\"\">run<\/code>, <code data-no-translation=\"\">push<\/code>, <code data-no-translation=\"\">pull<\/code> \u2014 hid the kernel. That, not virtualization itself, was what took off.<\/p>\n<div style=\"position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin:1.5em 0\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/wW9CAH9nSLs\" title=\"The future of Linux Containers \u2014 Solomon Hykes at PyCon 2013\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen style=\"position:absolute;top:0;left:0;width:100%;height:100%;border:0\"><\/iframe>\n<\/div>\n<p>Those already using LXC in production looked and said, \u201cwe already do that.\u201d Those who had never looked at a cgroup started packaging applications in 40 minutes. The difference was the Dockerfile and the Hub. A text recipe, cached layers, a public registry. \u201cIt works on my machine\u201d lost its excuse \u2014 the machine came along, in layers.<\/p>\n<h2>1.0, Hub, and the race of 2014\u20132015<\/h2>\n<p>Version 1.0 came out on 9 June 2014, the same summer Google announced Kubernetes. Docker Hub became the GitHub of images. In September 2013 Red Hat had already agreed to collaborate (Fedora, RHEL, OpenShift). In October 2014 Microsoft announced Engine on Windows Server. In November Amazon launched EC2 Container Service. IBM, Oracle, everyone wanted the whale on their slides.<\/p>\n<p>On 22 June 2015 Docker, CoreOS, Google, Microsoft, Amazon, and others announced what became the Open Container Initiative: a runtime and image-format standard, so the world would not be held hostage by a single daemon. runc came out of it (libcontainer was donated). containerd \u2014 the runtime Engine already used underneath \u2014 was donated to the CNCF. In 2017 Docker created the Moby project: the open source kit of parts, separate from the commercial brand.<\/p>\n<h2>Swarm, Kubernetes, and what the whale no longer orchestrates<\/h2>\n<p>Docker never wanted to be \u201cjust the runtime.\u201d Swarm mode entered Engine 1.12: clusters, services, overlays, Raft. Compose (beta in December 2013, 1.0 in October 2014) already handled the laptop with YAML. The problem was the real fleet \u2014 dozens of nodes, rolling updates, CRDs, operators. There Google's helm won. In 2017 Docker itself announced Kubernetes support. Swarm survived in its niche and in Docker Desktop; the production standard became the heptagon. The full story is in <a href=\"\/en\/2026\/09\/a-historia-do-kubernetes\/\">The history of Kubernetes<\/a>.<\/p>\n<p>What remained for the whale is what it always did best: the image, the workstation daemon, Hub, Compose. In August 2021 Docker Desktop stopped being free for large companies \u2014 Personal replaced Free. Engine on Linux, Apache 2.0, did not change licenses. Confusing the two is the classic way to get a compliance surprise.<\/p>\n<h2>What Docker really is<\/h2>\n<p>It is not a virtual machine. It is OS-level virtualization: processes isolated by namespaces (PID, net, mnt, uts, ipc, user), limited by cgroups, stacked on a union file system (OverlayFS). An image is a read-only template; a container is the image plus a writable layer. The daemon <code data-no-translation=\"\">dockerd<\/code> listens to the API; the CLI <code data-no-translation=\"\">docker<\/code> talks to the daemon. A registry stores the image. Compose describes a group. A volume retains the data when the container dies.<\/p>\n<p>Underneath 29.x, the stack is OCI: runc executes, containerd manages the lifecycle, BuildKit builds. Engine 29.8.0 already bundles containerd if the host does not have a separate service, and speaks nftables. Podman, nerdctl, and CRI-O cover the same territory without the Docker, Inc. daemon. The recipe \u2014 Dockerfile, layer, registry \u2014 is what caught on. In March 2026 <em>Communications of the ACM<\/em> put Docker on the cover, a retrospective of a decade.<\/p>\n<h2>2026: Engine 29.8, Compose 5, paid Desktop<\/h2>\n<p>Docker Engine 29.8.0 came out on 3 September 2026. Go 1.26.8, BuildKit 0.33.0, containerd 2.3.4, runc 1.5.1. Flag <code data-no-translation=\"\">--umask<\/code> in <code data-no-translation=\"\">run<\/code>\/<code data-no-translation=\"\">create<\/code>, configurable default AppArmor, hardening against <code data-no-translation=\"\">AF_VSOCK<\/code> through 32-bit socketcall. Desktop 4.89.0 (31 August) already bundled Compose 5.5.0. Rootless gained <code data-no-translation=\"\">gvisor-tap-vsock<\/code> as the default network driver.<\/p>\n<p>On Linux the free software path remains the same: the distro package or official repository, Apache 2.0, no Desktop EULA. For beginners, this blog's older material is still useful as a first introduction \u2014 with the caveat about 2017 \u2014 in <a href=\"\/en\/2017\/08\/curso-de-docker-gratis\/\">Free Docker Course<\/a>.<\/p>\n<h2>Timeline<\/h2>\n<ul>\n<li><strong>2008<\/strong> \u2014 Solomon Hykes founds dotCloud, a French PaaS; the container engine begins as an internal tool.<\/li>\n<li><strong>2010<\/strong> \u2014 dotCloud goes through Y Combinator.<\/li>\n<li><strong>March 2013<\/strong> \u2014 the <em>lightning talk<\/em> lasting five minutes at PyCon introduces Docker to the world; the code is opened.<\/li>\n<li><strong>June 2014<\/strong> \u2014 Docker 1.0, considered production-ready.<\/li>\n<li><strong>2014\u20132015<\/strong> \u2014 adoption race; Docker Hub is born and the company changes its name to Docker, Inc.<\/li>\n<li><strong>2015<\/strong> \u2014 the Open Container Initiative standardizes the image format and runtime, taking control out of a single company's hands.<\/li>\n<li><strong>2016<\/strong> \u2014 the arrival of <em>swarm mode<\/em>, Docker's bet on orchestration.<\/li>\n<li><strong>2017<\/strong> \u2014 Docker, Inc. itself announces Kubernetes support; the orchestration battle ends.<\/li>\n<li><strong>August 2021<\/strong> \u2014 Docker Desktop stops being free for large companies. Engine on Linux remains Apache 2.0.<\/li>\n<li><strong>3 September 2026<\/strong> \u2014 Docker Engine 29.8.0, with BuildKit 0.33, containerd 2.3.4, and runc 1.5.1.<\/li>\n<\/ul>\n<h2>Wrap-up<\/h2>\n<p>A French PaaS that never took off, a five-minute lightning talk, and a port metaphor. The kernel already had cgroups; what was missing was the verb. <code data-no-translation=\"\">docker run<\/code> became the verb. Fleet orchestration moved away to Kubernetes. The box format remained.<\/p>\n<p>The helm is in <a href=\"\/en\/2026\/09\/a-historia-do-kubernetes\/\">The history of Kubernetes<\/a>. The classic hypervisor, in <a href=\"\/en\/2026\/09\/a-historia-do-proxmox\/\">Proxmox<\/a> and <a href=\"\/en\/2026\/09\/a-historia-do-virtualbox\/\">VirtualBox<\/a>. The kernel, in <a href=\"\/en\/2026\/09\/linux-35-anos\/\">Linux turns 35<\/a>.<\/p>\n<p>From dotCloud to Engine 29.8.0: the whale still carries the boxes. Apache 2.0 on Linux, EULA on Desktop, OCI underneath. The lightning talk from 2013 fits in five minutes. The rest of the ecosystem does not.<\/p>","protected":false},"excerpt":{"rendered":"<p>In March 2013, during a five-minute lightning talk at PyCon in Santa Clara, Solomon Hykes showed what dotCloud used underneath its PaaS. Its name was Docker. On March 20, the code was released. In June 2014, version 1.0 arrived. Thirteen years later, Docker Engine 29.8.0 (September 3 \u2026 <a title=\"The history of Docker: the whale that packaged software\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/en\/2026\/09\/a-historia-do-docker\/\" aria-label=\"Read more about A hist\u00f3ria do Docker: a baleia que embalou o software\">Read more<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[103,46,2,111],"tags":[232,231,229,156,220,230],"class_list":["post-536","post","type-post","status-publish","format-standard","hentry","category-cloud","category-devops","category-linux","category-opensource","tag-compose","tag-containerd","tag-containers","tag-docker","tag-lxc","tag-moby"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/comments?post=536"}],"version-history":[{"count":3,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/536\/revisions"}],"predecessor-version":[{"id":1153,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/536\/revisions\/1153"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/media?parent=536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/categories?post=536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/tags?post=536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}