{"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\/es\/2026\/09\/a-historia-do-docker\/","title":{"rendered":"La historia de Docker: la ballena que envolvi\u00f3 el 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>En marzo de 2013, en un lightning talk de cinco minutos en la PyCon de Santa Clara, Solomon Hykes mostr\u00f3 lo que dotCloud utilizaba por debajo del PaaS. El nombre era Docker. El 20 de marzo se abri\u00f3 el c\u00f3digo. En junio de 2014 sali\u00f3 la 1.0. Trece a\u00f1os despu\u00e9s, Docker Engine 29.8.0 (3 de septiembre de 2026) sigue siendo la forma m\u00e1s com\u00fan de empaquetar un proceso Linux, incluso despu\u00e9s de que el orquestador de la flota se haya convertido en <a href=\"\/es\/2026\/09\/a-historia-do-kubernetes\/\">Kubernetes<\/a> y el runtime de bajo nivel se haya convertido en containerd.<\/p>\n<p><!-- more --><\/p>\n<h2>dotCloud, YC y un motor interno<\/h2>\n<p>Kamel Founadi, Solomon Hykes y Sebastien Pahl fundaron dotCloud en Y Combinator del verano de 2010. El producto, lanzado en 2011, era un PaaS: t\u00fa enviabas el c\u00f3digo, la plataforma apilaba el runtime. Por debajo hab\u00eda un motor de contenedores que nadie ve\u00eda. Hykes, franc\u00e9s, hab\u00eda pasado por Epitech y un tiempo en Estados Unidos. El insight no era \u201cinventar el contenedor\u201d \u2014 LXC, cgroups y namespaces ya estaban en el kernel. El insight era la <em>experiencia<\/em>: un archivo de receta, una imagen apilable, un comando para ejecutarlo igual en cualquier Linux.<\/p>\n<p>La met\u00e1fora vino del puerto. Contenedor de barco: est\u00e1ndar ISO, se apila, se cambia de barco sin reempaquetar la carga. El software merec\u00eda lo mismo. La ballena azul con cajas en la espalda \u2014 Moby Dock \u2014 se convirti\u00f3 en la mascota. En octubre de 2013 la empresa dej\u00f3 el nombre dotCloud y pas\u00f3 a llamarse Docker, Inc. El PaaS se vendi\u00f3. El motor se convirti\u00f3 en el producto.<\/p>\n<h2>PyCon 2013: cinco minutos que cambiaron el deploy<\/h2>\n<p>La charla se llamaba \u201cThe future of Linux Containers\u201d. Cinco minutos, demo, aplausos. En 20 de marzo de 2013 el c\u00f3digo se abri\u00f3. Al principio el runtime por defecto era LXC. En marzo de 2014, en la 0.9, Docker cambi\u00f3 LXC por <code data-no-translation=\"\">libcontainer<\/code>, escrito en Go, hablando directamente con cgroup, namespace, capabilities y apparmor\/selinux. Menos dependencia, m\u00e1s control. La 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 ocult\u00f3 el kernel. Fue eso, y no la virtualizaci\u00f3n en s\u00ed, lo que explot\u00f3.<\/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 en la 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>Quien ya ten\u00eda LXC en producci\u00f3n mir\u00f3 y dijo \u201cesto ya lo hacemos\u201d. Quien nunca hab\u00eda mirado cgroup empez\u00f3 a empaquetar la aplicaci\u00f3n en 40 minutos. La diferencia era el Dockerfile y el Hub. Receta en texto, capa cacheada, registro p\u00fablico. El \u201cfunciona en mi m\u00e1quina\u201d perdi\u00f3 la excusa \u2014 la m\u00e1quina iba junto, en capas.<\/p>\n<h2>1.0, Hub y la carrera de 2014\u20132015<\/h2>\n<p>La 1.0 sali\u00f3 en 9 de junio de 2014, en el mismo verano en que Google anunci\u00f3 Kubernetes. Docker Hub se convirti\u00f3 en el GitHub de las im\u00e1genes. En septiembre de 2013 Red Hat ya hab\u00eda cerrado la colaboraci\u00f3n (Fedora, RHEL, OpenShift). En octubre de 2014 Microsoft anunci\u00f3 Engine en Windows Server. En noviembre Amazon lanz\u00f3 EC2 Container Service. IBM, Oracle, todo el mundo quer\u00eda la ballena en la diapositiva.<\/p>\n<p>En 22 de junio de 2015 Docker, CoreOS, Google, Microsoft, Amazon y otros anunciaron lo que se convirti\u00f3 en la Open Container Initiative: un est\u00e1ndar de runtime y de formato de imagen, para que el mundo no quedase reh\u00e9n de un \u00fanico daemon. runc naci\u00f3 de ah\u00ed (libcontainer donado). containerd \u2014 el runtime que Engine ya usaba por debajo \u2014 fue donado a la CNCF. En 2017 Docker cre\u00f3 el proyecto Moby: el kit de piezas open source, separado de la marca comercial.<\/p>\n<h2>Swarm, Kubernetes y lo que la ballena ya no orquesta<\/h2>\n<p>Docker nunca quiso ser \u201csolo el runtime\u201d. Swarm mode entr\u00f3 en Engine 1.12: cluster, servicio, overlay, Raft. Compose (beta en diciembre de 2013, 1.0 en octubre de 2014) ya resolv\u00eda el port\u00e1til con YAML. El problema era la flota de verdad \u2014 decenas de nodos, rolling update, CRD, operador. Ah\u00ed gan\u00f3 el tim\u00f3n de Google. En 2017 la propia Docker anunci\u00f3 soporte para Kubernetes. Swarm sobrevivi\u00f3 en el nicho y en Docker Desktop; el est\u00e1ndar de producci\u00f3n qued\u00f3 el hept\u00e1gono. La historia completa est\u00e1 en <a href=\"\/es\/2026\/09\/a-historia-do-kubernetes\/\">A hist\u00f3ria do Kubernetes<\/a>.<\/p>\n<p>Lo que qued\u00f3 para la ballena es lo que siempre hizo mejor: la imagen, el daemon de la estaci\u00f3n de trabajo, el Hub, el Compose. En agosto de 2021 Docker Desktop dej\u00f3 de ser gratis para empresa grande \u2014 Personal en lugar de Free. Engine en Linux, Apache 2.0, no cambi\u00f3 de licencia. Confundir los dos es la forma cl\u00e1sica de llevarte un susto en compliance.<\/p>\n<h2>Lo que Docker realmente es<\/h2>\n<p>No es una m\u00e1quina virtual. Es virtualizaci\u00f3n a nivel del SO: procesos aislados por namespace (PID, net, mnt, uts, ipc, user), limitados por cgroup, apilados en un sistema de archivos uni\u00f3n (OverlayFS). Una imagen es una plantilla de solo lectura; un contenedor es la imagen m\u00e1s una capa de escritura. El daemon <code data-no-translation=\"\">dockerd<\/code> escucha la API; el CLI <code data-no-translation=\"\">docker<\/code> habla con el daemon. El registro guarda la imagen. Compose describe un conjunto. El volumen sostiene el dato cuando el contenedor muere.<\/p>\n<p>Bajo el cap\u00f3 de 29.x el stack es OCI: runc ejecuta, containerd gestiona el ciclo de vida, BuildKit construye. El Engine 29.8.0 ya incorpora containerd si el host no tiene un servicio separado, y habla nftables. Podman, nerdctl, CRI-O hacen el mismo recorte sin el daemon de Docker, Inc. La receta \u2014 Dockerfile, capa, registry \u2014 es la que cuaj\u00f3. En marzo de 2026 la <em>Communications of the ACM<\/em> puso a Docker en portada, retrospectiva de una d\u00e9cada.<\/p>\n<h2>2026: Engine 29.8, Compose 5, Desktop de pago<\/h2>\n<p>El Docker Engine 29.8.0 sali\u00f3 el 3 de septiembre 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 configurable, hardening contra <code data-no-translation=\"\">AF_VSOCK<\/code> mediante socketcall de 32 bits. El Desktop 4.89.0 (31 de agosto) ya inclu\u00eda Compose 5.5.0. Rootless gan\u00f3 <code data-no-translation=\"\">gvisor-tap-vsock<\/code> como driver de red por defecto.<\/p>\n<p>En Linux el camino libre sigue siendo el mismo: paquete de la distro o el repositorio oficial, Apache 2.0, sin EULA de Desktop. Para quien est\u00e1 empezando, el material antiguo de este blog a\u00fan sirve como primer contacto \u2014 con la salvedad de 2017 \u2014, en <a href=\"\/es\/2017\/08\/curso-de-docker-gratis\/\">Curso de Docker Gr\u00e1tis<\/a>.<\/p>\n<h2>L\u00ednea de tiempo<\/h2>\n<ul>\n<li><strong>2008<\/strong> \u2014 Solomon Hykes funda dotCloud, un PaaS franc\u00e9s; el motor de contenedores nace como herramienta interna.<\/li>\n<li><strong>2010<\/strong> \u2014 dotCloud pasa por Y Combinator.<\/li>\n<li><strong>Marzo de 2013<\/strong> \u2014 el <em>lightning talk<\/em> de cinco minutos en la PyCon presenta Docker al mundo; el c\u00f3digo es abierto.<\/li>\n<li><strong>Junio de 2014<\/strong> \u2014 Docker 1.0, considerado listo para producci\u00f3n.<\/li>\n<li><strong>2014\u20132015<\/strong> \u2014 carrera de adopci\u00f3n; nace Docker Hub y la empresa cambia su nombre a Docker, Inc.<\/li>\n<li><strong>2015<\/strong> \u2014 la Open Container Initiative estandariza el formato de imagen y el runtime, quitando el control de las manos de una sola empresa.<\/li>\n<li><strong>2016<\/strong> \u2014 llega el <em>swarm mode<\/em>, la apuesta de Docker en orquestaci\u00f3n.<\/li>\n<li><strong>2017<\/strong> \u2014 la propia Docker, Inc. anuncia soporte para Kubernetes; la disputa de orquestaci\u00f3n termina.<\/li>\n<li><strong>Agosto de 2021<\/strong> \u2014 Docker Desktop deja de ser gratuito para empresas grandes. El Engine en Linux sigue siendo Apache 2.0.<\/li>\n<li><strong>3 de septiembre de 2026<\/strong> \u2014 Docker Engine 29.8.0, con BuildKit 0.33, containerd 2.3.4 y runc 1.5.1.<\/li>\n<\/ul>\n<h2>Cierre<\/h2>\n<p>Un PaaS franc\u00e9s que no despeg\u00f3, una charla rel\u00e1mpago de cinco minutos y una met\u00e1fora de puerto. El kernel ya ten\u00eda cgroup; faltaba el verbo. <code data-no-translation=\"\">docker run<\/code> se convirti\u00f3 en el verbo. El orquestador de la flota se fue a Kubernetes. El formato de la caja se qued\u00f3.<\/p>\n<p>El tim\u00f3n est\u00e1 en <a href=\"\/es\/2026\/09\/a-historia-do-kubernetes\/\">A hist\u00f3ria do Kubernetes<\/a>. El hipervisor cl\u00e1sico, en <a href=\"\/es\/2026\/09\/a-historia-do-proxmox\/\">Proxmox<\/a> e <a href=\"\/es\/2026\/09\/a-historia-do-virtualbox\/\">VirtualBox<\/a>. El kernel, en <a href=\"\/es\/2026\/09\/linux-35-anos\/\">Linux cumple 35 a\u00f1os<\/a>.<\/p>\n<p>De dotCloud al Engine 29.8.0: la ballena todav\u00eda carga las cajas. Apache 2.0 en Linux, EULA en el escritorio, OCI debajo. La charla rel\u00e1mpago de 2013 cabe en cinco minutos. El resto del ecosistema, no.<\/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=\"La historia de Docker: la ballena que envolvi\u00f3 el software\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/a-historia-do-docker\/\" aria-label=\"Leer m\u00e1s sobre A hist\u00f3ria do Docker: a baleia que embalou o software\">Leer m\u00e1s<\/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\/es\/wp-json\/wp\/v2\/posts\/536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=536"}],"version-history":[{"count":3,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/536\/revisions"}],"predecessor-version":[{"id":1153,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/536\/revisions\/1153"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}