{"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":"A hist\u00f3ria do Docker: a baleia que embalou o 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>Em mar\u00e7o de 2013, num lightning talk de cinco minutos no PyCon de Santa Clara, Solomon Hykes mostrou o que a dotCloud usava por baixo do PaaS. O nome era Docker. Em 20 de mar\u00e7o o c\u00f3digo abriu. Em junho de 2014 saiu a 1.0. Treze anos depois o Docker Engine 29.8.0 (3 de setembro de 2026) ainda \u00e9 o jeito mais comum de empacotar um processo Linux \u2014 mesmo depois de o orquestrador da frota ter virado <a href=\"\/en\/2026\/09\/a-historia-do-kubernetes\/\">Kubernetes<\/a> e o runtime de baixo ter virado containerd.<\/p>\n<p><!-- more --><\/p>\n<h2>dotCloud, YC e um motor interno<\/h2>\n<p>Kamel Founadi, Solomon Hykes e Sebastien Pahl fundaram a dotCloud no Y Combinator do ver\u00e3o de 2010. O produto, lan\u00e7ado em 2011, era PaaS: voc\u00ea mandava o c\u00f3digo, a plataforma empilhava runtime. Por baixo havia um motor de container que ningu\u00e9m via. Hykes, franc\u00eas, tinha passado pela Epitech e por um per\u00edodo nos EUA. O insight n\u00e3o era \u201cinventar o container\u201d \u2014 LXC, cgroups e namespaces j\u00e1 estavam no kernel. O insight era a <em>experi\u00eancia<\/em>: um arquivo de receita, uma imagem empilh\u00e1vel, um comando para rodar igual em qualquer Linux.<\/p>\n<p>A met\u00e1fora veio do porto. Container de navio: padr\u00e3o ISO, empilha, troca de navio sem reempacotar a carga. Software merecia o mesmo. A baleia azul com caixas nas costas \u2014 Moby Dock \u2014 virou o mascote. Em outubro de 2013 a empresa largou o nome dotCloud e passou a se chamar Docker, Inc. O PaaS foi vendido. O motor virou o produto.<\/p>\n<h2>PyCon 2013: cinco minutos que mudaram o deploy<\/h2>\n<p>A palestra se chamava \u201cThe future of Linux Containers\u201d. Cinco minutos, demo, aplauso. Em 20 de mar\u00e7o de 2013 o c\u00f3digo abriu. No come\u00e7o o runtime default era LXC. Em mar\u00e7o de 2014, na 0.9, o Docker trocou o LXC pelo <code data-no-translation=\"\">libcontainer<\/code>, escrito em Go, falando direto com cgroup, namespace, capabilities e apparmor\/selinux. Menos depend\u00eancia, mais controle. A API alta \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 escondeu o kernel. Foi isso, e n\u00e3o a virtualiza\u00e7\u00e3o em si, que explodiu.<\/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 no 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>Quem j\u00e1 tinha LXC em produ\u00e7\u00e3o olhou e disse \u201cisso a gente j\u00e1 faz\u201d. Quem nunca tinha olhado para cgroup passou a empacotar a aplica\u00e7\u00e3o em 40 minutos. A diferen\u00e7a era o Dockerfile e o Hub. Receita texto, camada cacheada, registry p\u00fablico. O \u201cfunciona na minha m\u00e1quina\u201d perdeu a desculpa \u2014 a m\u00e1quina ia junto, em camadas.<\/p>\n<h2>1.0, Hub e a corrida de 2014\u20132015<\/h2>\n<p>A 1.0 saiu em 9 de junho de 2014, no mesmo ver\u00e3o em que o Google anunciou o Kubernetes. Docker Hub virou o GitHub das imagens. Em setembro de 2013 a Red Hat j\u00e1 tinha fechado colabora\u00e7\u00e3o (Fedora, RHEL, OpenShift). Em outubro de 2014 a Microsoft anunciou Engine no Windows Server. Em novembro a Amazon lan\u00e7ou o EC2 Container Service. IBM, Oracle, todo mundo queria a baleia no slide.<\/p>\n<p>Em 22 de junho de 2015 Docker, CoreOS, Google, Microsoft, Amazon e outros anunciaram o que virou a Open Container Initiative: um padr\u00e3o de runtime e de formato de imagem, para o mundo n\u00e3o ficar ref\u00e9m de um daemon s\u00f3. runc nasceu da\u00ed (libcontainer doado). containerd \u2014 o runtime que o Engine j\u00e1 usava por baixo \u2014 foi doado \u00e0 CNCF. Em 2017 a Docker criou o projeto Moby: o kit de pe\u00e7as open source, separado da marca comercial.<\/p>\n<h2>Swarm, Kubernetes e o que a baleia n\u00e3o orquestra mais<\/h2>\n<p>O Docker nunca quis ser \u201cs\u00f3 o runtime\u201d. Swarm mode entrou no Engine 1.12: cluster, servi\u00e7o, overlay, Raft. Compose (beta em dezembro de 2013, 1.0 em outubro de 2014) j\u00e1 resolvia o laptop com YAML. O problema era a frota de verdade \u2014 dezenas de n\u00f3s, rolling update, CRD, operador. A\u00ed o leme do Google ganhou. Em 2017 a pr\u00f3pria Docker anunciou suporte a Kubernetes. Swarm sobreviveu no nicho e no Docker Desktop; o padr\u00e3o de produ\u00e7\u00e3o ficou o hept\u00e1gono. A hist\u00f3ria completa est\u00e1 em <a href=\"\/en\/2026\/09\/a-historia-do-kubernetes\/\">A hist\u00f3ria do Kubernetes<\/a>.<\/p>\n<p>O que restou para a baleia \u00e9 o que ela sempre fez melhor: a imagem, o daemon da esta\u00e7\u00e3o de trabalho, o Hub, o Compose. Em agosto de 2021 o Docker Desktop deixou de ser gr\u00e1tis para empresa grande \u2014 Personal no lugar de Free. O Engine no Linux, Apache 2.0, n\u00e3o mudou de licen\u00e7a. Confundir os dois \u00e9 o jeito cl\u00e1ssico de tomar susto no compliance.<\/p>\n<h2>O que o Docker realmente \u00e9<\/h2>\n<p>N\u00e3o \u00e9 m\u00e1quina virtual. \u00c9 virtualiza\u00e7\u00e3o no n\u00edvel do SO: processos isolados por namespace (PID, net, mnt, uts, ipc, user), limitados por cgroup, empilhados num sistema de arquivos union (OverlayFS). Uma imagem \u00e9 um template s\u00f3-leitura; um container \u00e9 a imagem mais uma camada de escrita. O daemon <code data-no-translation=\"\">dockerd<\/code> escuta a API; o CLI <code data-no-translation=\"\">docker<\/code> fala com o daemon. Registry guarda a imagem. Compose descreve um conjunto. Volume segura o dado quando o container morre.<\/p>\n<p>Por baixo da 29.x o stack \u00e9 OCI: runc executa, containerd gerencia o ciclo de vida, BuildKit constr\u00f3i. O Engine 29.8.0 j\u00e1 embute containerd se o host n\u00e3o tiver um servi\u00e7o separado, e fala nftables. Podman, nerdctl, CRI-O fazem o mesmo recorte sem o daemon da Docker, Inc. A receita \u2014 Dockerfile, camada, registry \u2014 \u00e9 que pegou. Em mar\u00e7o de 2026 a <em>Communications of the ACM<\/em> p\u00f4s Docker na capa, retrospectiva de uma d\u00e9cada.<\/p>\n<h2>2026: Engine 29.8, Compose 5, Desktop pago<\/h2>\n<p>O Docker Engine 29.8.0 saiu em 3 de setembro de 2026. Go 1.26.8, BuildKit 0.33.0, containerd 2.3.4, runc 1.5.1. Flag <code data-no-translation=\"\">--umask<\/code> no <code data-no-translation=\"\">run<\/code>\/<code data-no-translation=\"\">create<\/code>, AppArmor default configur\u00e1vel, hardening contra <code data-no-translation=\"\">AF_VSOCK<\/code> via socketcall de 32 bits. O Desktop 4.89.0 (31 de agosto) j\u00e1 empilhava Compose 5.5.0. Rootless ganhou <code data-no-translation=\"\">gvisor-tap-vsock<\/code> como driver de rede default.<\/p>\n<p>No Linux o caminho livre continua o mesmo: pacote da distro ou o reposit\u00f3rio oficial, Apache 2.0, sem EULA de Desktop. Para quem est\u00e1 come\u00e7ando, o material antigo deste blog ainda vale como primeiro contato \u2014 com a ressalva de 2017 \u2014 em <a href=\"\/en\/2017\/08\/curso-de-docker-gratis\/\">Curso de Docker Gr\u00e1tis<\/a>.<\/p>\n<h2>Timeline<\/h2>\n<ul>\n<li><strong>2008<\/strong> \u2014 Solomon Hykes funda a dotCloud, um PaaS franc\u00eas; o motor de cont\u00eainer nasce como ferramenta interna.<\/li>\n<li><strong>2010<\/strong> \u2014 a dotCloud passa pelo Y Combinator.<\/li>\n<li><strong>Mar\u00e7o de 2013<\/strong> \u2014 the <em>lightning talk<\/em> de cinco minutos na PyCon apresenta o Docker ao mundo; o c\u00f3digo \u00e9 aberto.<\/li>\n<li><strong>Junho de 2014<\/strong> \u2014 Docker 1.0, considerado pronto para produ\u00e7\u00e3o.<\/li>\n<li><strong>2014\u20132015<\/strong> \u2014 corrida de ado\u00e7\u00e3o; nasce o Docker Hub e a empresa troca de nome para Docker, Inc.<\/li>\n<li><strong>2015<\/strong> \u2014 a Open Container Initiative padroniza o formato de imagem e o runtime, tirando o controle das m\u00e3os de uma s\u00f3 empresa.<\/li>\n<li><strong>2016<\/strong> \u2014 chega o <em>swarm mode<\/em>, a aposta da Docker em orquestra\u00e7\u00e3o.<\/li>\n<li><strong>2017<\/strong> \u2014 a pr\u00f3pria Docker, Inc. anuncia suporte a Kubernetes; a disputa de orquestra\u00e7\u00e3o acaba.<\/li>\n<li><strong>Agosto de 2021<\/strong> \u2014 o Docker Desktop deixa de ser gratuito para empresa grande. O Engine no Linux segue Apache 2.0.<\/li>\n<li><strong>3 de setembro de 2026<\/strong> \u2014 Docker Engine 29.8.0, com BuildKit 0.33, containerd 2.3.4 e runc 1.5.1.<\/li>\n<\/ul>\n<h2>O que ficou<\/h2>\n<p>Um PaaS franc\u00eas que n\u00e3o decolou, um lightning talk de cinco minutos e uma met\u00e1fora de porto. O kernel j\u00e1 tinha cgroup; faltava o verbo. <code data-no-translation=\"\">docker run<\/code> virou o verbo. O orquestrador da frota foi embora para o Kubernetes. O formato da caixa ficou.<\/p>\n<p>O leme est\u00e1 em <a href=\"\/en\/2026\/09\/a-historia-do-kubernetes\/\">A hist\u00f3ria do Kubernetes<\/a>. O hipervisor cl\u00e1ssico, em <a href=\"\/en\/2026\/09\/a-historia-do-proxmox\/\">Proxmox<\/a> and <a href=\"\/en\/2026\/09\/a-historia-do-virtualbox\/\">VirtualBox<\/a>. O kernel, em <a href=\"\/en\/2026\/09\/linux-35-anos\/\">Linux faz 35 anos<\/a>.<\/p>\n<p>Da dotCloud ao Engine 29.8.0: a baleia ainda carrega as caixas. Apache 2.0 no Linux, EULA no Desktop, OCI embaixo. O lightning talk de 2013 cabe em cinco minutos. O resto do ecossistema, n\u00e3o.<\/p>","protected":false},"excerpt":{"rendered":"<p>Em mar\u00e7o de 2013, num lightning talk de cinco minutos no PyCon de Santa Clara, Solomon Hykes mostrou o que a dotCloud usava por baixo do PaaS. O nome era Docker. Em 20 de mar\u00e7o o c\u00f3digo abriu. Em junho de 2014 saiu a 1.0. Treze anos depois o Docker Engine 29.8.0 (3 de setembro &#8230; <a title=\"A hist\u00f3ria do Docker: a baleia que embalou o 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}]}}