{"id":1168,"date":"2026-03-11T15:20:14","date_gmt":"2026-03-11T18:20:14","guid":{"rendered":"https:\/\/maurobernal.com.ar\/blog\/?p=1168"},"modified":"2026-03-11T20:02:13","modified_gmt":"2026-03-11T23:02:13","slug":"como-docker-cambio-la-forma-en-que-trabajo","status":"publish","type":"post","link":"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/","title":{"rendered":"C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo)"},"content":{"rendered":"\n<p class=\"intro-destacado\">Durante a\u00f1os trabaj\u00e9 con m\u00e1quinas virtuales y pens\u00e9 que era suficiente. Cada nuevo proyecto significaba clonar una VM, esperar que levantara, rezar para que las dependencias fueran las correctas y luego descubrir, inevitablemente, que algo fallaba en producci\u00f3n que no fallaba en mi m\u00e1quina. Docker cambi\u00f3 todo eso. Pero no fue amor a primera vista.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El problema que todos tenemos (y nadie quiere admitir)<\/h2>\n\n\n\n<p>Me acuerdo exactamente del momento. Eran las 11 de la noche, est\u00e1bamos por hacer un deploy de una API .NET y el servidor de producci\u00f3n se negaba a arrancar la aplicaci\u00f3n. El error era cr\u00edptico: una biblioteca de dependencias con versi\u00f3n diferente a la que ten\u00edamos en desarrollo. Tres horas despu\u00e9s, con el equipo exhausto, logramos resolver el problema manualmente. Al d\u00eda siguiente alguien pregunt\u00f3: <em>\u00ab\u00bfy si usamos Docker?\u00bb<\/em><\/p>\n\n\n\n<p>En ese momento yo ten\u00eda mis reservas. <em>\u00ab\u00bfPara qu\u00e9 complicar las cosas si las VMs ya funcionan?\u00bb<\/em>, pens\u00e9. Tard\u00e9 un tiempo en entender que no se trataba de complicar, sino exactamente de lo contrario.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 es Docker, realmente?<\/h2>\n\n\n\n<p>Docker es una plataforma de c\u00f3digo abierto que permite empaquetar una aplicaci\u00f3n junto con <strong>todas sus dependencias<\/strong> \u2014bibliotecas, runtime, herramientas del sistema, configuraci\u00f3n\u2014 en una unidad estandarizada llamada <strong>contenedor<\/strong>. Ese contenedor se puede ejecutar de forma id\u00e9ntica en cualquier entorno que tenga Docker instalado: tu notebook, el servidor de staging, producci\u00f3n en cloud o un cluster on-premise como el que manejo yo en SUSE Linux HA.<\/p>\n\n\n\n<p>La definici\u00f3n t\u00e9cnica es elegante: Docker comparte el kernel del sistema operativo anfitri\u00f3n en lugar de virtualizar hardware completo. Eso lo hace <strong>liviano, r\u00e1pido y eficiente<\/strong>. Pero lo que me convenci\u00f3 no fue la definici\u00f3n t\u00e9cnica sino lo que significa en la pr\u00e1ctica: el contenedor que prob\u00e9 en mi m\u00e1quina es <em>exactamente<\/em> el mismo que se ejecuta en producci\u00f3n. Sin sorpresas.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># As\u00ed de simple es levantar un servidor nginx con Docker\ndocker run -d -p 8080:80 --name mi-web nginx\n\n# En segundos ten\u00e9s un servidor web corriendo\n# Sin instalar nginx, sin configurar nada en el sistema<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Un poco de historia: Docker no invent\u00f3 los contenedores<\/h2>\n\n\n\n<p>Algo que me result\u00f3 fascinante cuando profundic\u00e9 en el tema es que la idea de contenedores no naci\u00f3 con Docker. La tecnolog\u00eda de aislamiento de procesos tiene d\u00e9cadas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>1979 \u2014 chroot:<\/strong> El abuelo de todo. Permit\u00eda cambiar el directorio ra\u00edz de un proceso, aisl\u00e1ndolo del sistema de archivos principal. Unix V7.<\/li>\n<li><strong>2000 \u2014 FreeBSD Jails:<\/strong> Llev\u00f3 el concepto m\u00e1s lejos: aislamiento de procesos, usuarios y red.<\/li>\n<li><strong>2008 \u2014 Linux Containers (LXC):<\/strong> El kernel de Linux incorpor\u00f3 <em>cgroups<\/em> (para limitar uso de recursos) y <em>namespaces<\/em> (para aislar procesos, red, sistema de archivos). Esta es la base t\u00e9cnica sobre la que se construy\u00f3 Docker.<\/li>\n<li><strong>2013 \u2014 Docker:<\/strong> Solomon Hykes, trabajando en dotCloud (una empresa PaaS francesa), tom\u00f3 toda esa tecnolog\u00eda del kernel y la envolvi\u00f3 en una herramienta con una CLI amigable y un ecosistema de distribuci\u00f3n de im\u00e1genes. Presentado en PyCon 2013, liberado como open source ese mismo a\u00f1o.<\/li>\n<\/ul>\n\n\n\n<p>La genialidad de Docker no fue inventar algo nuevo sino hacer accesible lo que ya exist\u00eda. Y eso, en tecnolog\u00eda, suele ser la innovaci\u00f3n m\u00e1s poderosa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Por qu\u00e9 Docker importa: los 5 beneficios que cambiaron mi forma de trabajar<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Consistencia entre entornos<\/h3>\n\n\n\n<p>Este es el grande. El que me hizo pasar de esc\u00e9ptico a evangelista. Con Docker, la frase <em>\u00abfunciona en mi m\u00e1quina\u00bb<\/em> pierde sentido. Si el contenedor corre en dev, corre en prod. La imagen es la misma. Las dependencias son las mismas. El runtime es el mismo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Si esto funciona en tu m\u00e1quina...\ndocker run --rm -v $(pwd):\/app -w \/app node:20 node app.js\n\n# ...esto funcionar\u00e1 igual en el servidor de producci\u00f3n\ndocker run --rm -v \/apps\/miapp:\/app -w \/app node:20 node app.js<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Arranque en segundos (no en minutos)<\/h3>\n\n\n\n<p>Ven\u00eda de un mundo donde levantar una VM significaba esperar 2 o 3 minutos m\u00ednimo. Con Docker, un contenedor arranca en <strong>segundos o incluso milisegundos<\/strong>. Eso transforma completamente el flujo de trabajo: pod\u00e9s destruir y recrear entornos constantemente sin perder el hilo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Levantar PostgreSQL 16 completo en segundos:\ndocker run -d   --name postgres-dev   -e POSTGRES_PASSWORD=mipassword   -e POSTGRES_DB=miapp   -p 5432:5432   postgres:16-alpine\n\n# Listo. Base de datos funcionando sin instalar nada en el sistema.<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Eficiencia de recursos<\/h3>\n\n\n\n<p>En mi cluster on-premise de dos nodos SUSE Linux, cada recurso cuenta. Antes, cada servicio necesitaba su propia VM con un SO completo. Hoy tengo <strong>decenas de contenedores corriendo en los mismos nodos<\/strong> que antes apenas soportaban cinco VMs. Los contenedores comparten el kernel del host: no replican el sistema operativo, solo empaquetan lo que la aplicaci\u00f3n necesita.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Portabilidad real<\/h3>\n\n\n\n<p>Constru\u00eds la imagen una vez y la ejecut\u00e1s en cualquier lado: tu notebook con WSL2, un servidor Ubuntu on-premise, AWS EC2, Azure Container Instances, Google Cloud Run. La misma imagen. Sin recompilar, sin reconfigurar. Esta portabilidad es lo que despu\u00e9s abre la puerta a Kubernetes, que orquesta esos contenedores a escala.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Aislamiento y seguridad<\/h3>\n\n\n\n<p>Cada contenedor vive en su propio mundo: sus procesos, su sistema de archivos, su red. Si un contenedor tiene un problema, los dem\u00e1s no se enteran. Puedo tener dos versiones de Python corriendo en paralelo sin conflictos. Puedo experimentar con una nueva versi\u00f3n de una librer\u00eda sin tocar el sistema. Para un entorno de producci\u00f3n, eso es tranquilidad.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Docker vs. M\u00e1quinas Virtuales: la comparaci\u00f3n que aclara todo<\/h2>\n\n\n\n<p>Cuando empec\u00e9 con Docker, la pregunta que m\u00e1s me hac\u00edan era: <em>\u00ab\u00bfy entonces las VMs mueren?\u00bb<\/em>. La respuesta corta es no. La respuesta larga es m\u00e1s interesante.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Caracter\u00edstica<\/th><th>Docker (Contenedor)<\/th><th>M\u00e1quina Virtual<\/th><\/tr><\/thead><tbody><tr><td>Abstracci\u00f3n<\/td><td>Nivel de SO<\/td><td>Nivel de hardware<\/td><\/tr><tr><td>Kernel<\/td><td>Comparte el kernel del host<\/td><td>Kernel propio por VM<\/td><\/tr><tr><td>Tiempo de arranque<\/td><td>Segundos \/ milisegundos<\/td><td>Minutos<\/td><\/tr><tr><td>Tama\u00f1o de imagen<\/td><td>MBs<\/td><td>GBs<\/td><\/tr><tr><td>Consumo de recursos<\/td><td>Muy bajo<\/td><td>Alto (OS completo por VM)<\/td><\/tr><tr><td>Densidad en el host<\/td><td>Alta (decenas\/cientos)<\/td><td>Baja (pocas VMs)<\/td><\/tr><tr><td>Aislamiento<\/td><td>A nivel de proceso<\/td><td>Aislamiento completo de SO<\/td><\/tr><tr><td>Portabilidad<\/td><td>Muy alta<\/td><td>Media (im\u00e1genes pesadas)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfCu\u00e1ndo uso Docker?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Microservicios y APIs independientes<\/li>\n<li>Entornos de desarrollo locales (base de datos, cache, message broker)<\/li>\n<li>Pipelines de CI\/CD donde necesito reproducibilidad<\/li>\n<li>Cuando necesito escalar r\u00e1pido y aprovechar recursos<\/li>\n<li>Como base para orquestar con Kubernetes<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfCu\u00e1ndo sigo usando VMs?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cuando necesito aislar completamente a nivel de SO (seguridad m\u00e1xima)<\/li>\n<li>Aplicaciones legacy que dependen de un SO espec\u00edfico<\/li>\n<li>Cuando el equipo no est\u00e1 listo para el cambio (la convivencia es v\u00e1lida)<\/li>\n<li>Workloads que requieren acceso directo a hardware espec\u00edfico<\/li>\n<\/ul>\n\n\n\n<p>En muchos de mis entornos actuales uso ambos: contenedores Docker corriendo <em>dentro<\/em> de VMs. As\u00ed combino el aislamiento fuerte de las VMs con la eficiencia y portabilidad de los contenedores.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Un ejemplo real: de \u00abfunciona en mi m\u00e1quina\u00bb a \u00abfunciona en todos lados\u00bb<\/h2>\n\n\n\n<p>Hace poco tuve que desplegar una aplicaci\u00f3n .NET 8 que en desarrollo corr\u00eda perfecto y en producci\u00f3n fallaba por diferencias en las librer\u00edas del sistema. Con Docker, la soluci\u00f3n fue crear una imagen que empaquetara exactamente el runtime y las dependencias necesarias:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Dockerfile simple para una API .NET 8\nFROM mcr.microsoft.com\/dotnet\/aspnet:8.0 AS base\nWORKDIR \/app\nEXPOSE 80\n\nFROM mcr.microsoft.com\/dotnet\/sdk:8.0 AS build\nWORKDIR \/src\nCOPY [\"MiApi.csproj\", \".\"]\nRUN dotnet restore\nCOPY . .\nRUN dotnet build -c Release -o \/app\/build\n\nFROM build AS publish\nRUN dotnet publish -c Release -o \/app\/publish\n\nFROM base AS final\nWORKDIR \/app\nCOPY --from=publish \/app\/publish .\nENTRYPOINT [\"dotnet\", \"MiApi.dll\"]<\/code><\/pre>\n\n\n\n<p>Desde ese d\u00eda, el deploy es siempre el mismo comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker build -t miapi:latest .\ndocker run -d -p 80:80 --name miapi miapi:latest<\/code><\/pre>\n\n\n\n<p>Sin sorpresas. Sin diferencias entre entornos. Sin las 11 de la noche arreglando dependencias.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n: vale la curva de aprendizaje<\/h2>\n\n\n\n<p>Si est\u00e1s evaluando si meterte con Docker, mi respuesta es s\u00ed, sin dudar. La curva de aprendizaje existe, pero no es empinada. En pocos d\u00edas pod\u00e9s tener tus primeros contenedores funcionando. Y una vez que lo incorpor\u00e1s a tu flujo de trabajo, no entend\u00e9s c\u00f3mo trabajabas sin \u00e9l.<\/p>\n\n\n\n<p>En los pr\u00f3ximos art\u00edculos de esta serie voy a ir a fondo con la arquitectura interna de Docker, los Dockerfiles, la gesti\u00f3n de redes, vol\u00famenes y finalmente Docker Compose \u2014el salto que te lleva de un contenedor a un entorno completo con m\u00faltiples servicios coordinados.<\/p>\n\n\n\n<p>Si ten\u00e9s preguntas o quer\u00e9s compartir tu propia experiencia con Docker (o con las VMs que todav\u00eda no pudiste abandonar), dej\u00e1 tu comentario abajo. &#x1f447;<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><em>Este art\u00edculo forma parte de la serie <strong>Docker Completo<\/strong>, donde recorro desde los conceptos b\u00e1sicos hasta casos de uso avanzados en entornos on-premise y cloud.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n<p><em><strong>Serie Docker Completo<\/strong> | Pr\u00f3ximo: <a href=\"https:\/\/maurobernal.com.ar\/blog\/blog\/kubernetes\/arquitectura-interna-de-docker-engine-daemon-imagenes\/\">Por dentro del motor: entendiendo la arquitectura de Docker \u2192<\/a><\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>Durante a\u00f1os trabaj\u00e9 con m\u00e1quinas virtuales y cre\u00ed que era suficiente. Docker cambi\u00f3 todo eso. En este art\u00edculo cuento qu\u00e9 es Docker realmente, su historia, por qu\u00e9 importa y c\u00f3mo se compara con las VMs \u2014 desde la perspectiva de alguien que lo adopt\u00f3 tarde pero no se arrepiente.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[233],"tags":[241,243,242,240,215,244],"class_list":["post-1168","post","type-post","status-publish","format-standard","hentry","category-kubernetes","tag-contenedores","tag-contenedorizacion","tag-devops","tag-docker","tag-linux","tag-virtualizacion"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo) &#183; devops Mauro Bernal<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo) &#183; devops Mauro Bernal\" \/>\n<meta property=\"og:description\" content=\"Durante a\u00f1os trabaj\u00e9 con m\u00e1quinas virtuales y cre\u00ed que era suficiente. Docker cambi\u00f3 todo eso. En este art\u00edculo cuento qu\u00e9 es Docker realmente, su historia, por qu\u00e9 importa y c\u00f3mo se compara con las VMs \u2014 desde la perspectiva de alguien que lo adopt\u00f3 tarde pero no se arrepiente.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/\" \/>\n<meta property=\"og:site_name\" content=\"devops Mauro Bernal\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-11T18:20:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-11T23:02:13+00:00\" \/>\n<meta name=\"author\" content=\"Mauro Bernal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@_maurobernal\" \/>\n<meta name=\"twitter:site\" content=\"@_maurobernal\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mauro Bernal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/como-docker-cambio-la-forma-en-que-trabajo\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/como-docker-cambio-la-forma-en-que-trabajo\\\/\"},\"author\":{\"name\":\"Mauro Bernal\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"headline\":\"C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo)\",\"datePublished\":\"2026-03-11T18:20:14+00:00\",\"dateModified\":\"2026-03-11T23:02:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/como-docker-cambio-la-forma-en-que-trabajo\\\/\"},\"wordCount\":1320,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"keywords\":[\"contenedores\",\"contenedorizaci\u00f3n\",\"devops\",\"docker\",\"linux\",\"virtualizaci\u00f3n\"],\"articleSection\":[\"Kubernetes\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/como-docker-cambio-la-forma-en-que-trabajo\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/como-docker-cambio-la-forma-en-que-trabajo\\\/\",\"url\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/como-docker-cambio-la-forma-en-que-trabajo\\\/\",\"name\":\"C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo) &#183; devops Mauro Bernal\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#website\"},\"datePublished\":\"2026-03-11T18:20:14+00:00\",\"dateModified\":\"2026-03-11T23:02:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/como-docker-cambio-la-forma-en-que-trabajo\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/como-docker-cambio-la-forma-en-que-trabajo\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/como-docker-cambio-la-forma-en-que-trabajo\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/\",\"name\":\"devops Mauro Bernal\",\"description\":\"Cuando tu trabajo es hacer que las cosas funcionen bien...\",\"publisher\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\",\"name\":\"Mauro Bernal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"width\":1740,\"height\":1740,\"caption\":\"Mauro Bernal\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\"},\"description\":\"Desarrollo de Sistemas en .Net, IT Callcenters, DBA de SQL Server, Mikrotik, Pentest y T\u00e9cnico consultor de Sistemas Bejerman\",\"sameAs\":[\"https:\\\/\\\/maurobernal.com.ar\",\"https:\\\/\\\/x.com\\\/_maurobernal\",\"https:\\\/\\\/youtube.com\\\/maurobernal\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo) &#183; devops Mauro Bernal","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo) &#183; devops Mauro Bernal","og_description":"Durante a\u00f1os trabaj\u00e9 con m\u00e1quinas virtuales y cre\u00ed que era suficiente. Docker cambi\u00f3 todo eso. En este art\u00edculo cuento qu\u00e9 es Docker realmente, su historia, por qu\u00e9 importa y c\u00f3mo se compara con las VMs \u2014 desde la perspectiva de alguien que lo adopt\u00f3 tarde pero no se arrepiente.","og_url":"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/","og_site_name":"devops Mauro Bernal","article_published_time":"2026-03-11T18:20:14+00:00","article_modified_time":"2026-03-11T23:02:13+00:00","author":"Mauro Bernal","twitter_card":"summary_large_image","twitter_creator":"@_maurobernal","twitter_site":"@_maurobernal","twitter_misc":{"Escrito por":"Mauro Bernal","Tiempo de lectura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/#article","isPartOf":{"@id":"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/"},"author":{"name":"Mauro Bernal","@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"headline":"C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo)","datePublished":"2026-03-11T18:20:14+00:00","dateModified":"2026-03-11T23:02:13+00:00","mainEntityOfPage":{"@id":"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/"},"wordCount":1320,"commentCount":0,"publisher":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"keywords":["contenedores","contenedorizaci\u00f3n","devops","docker","linux","virtualizaci\u00f3n"],"articleSection":["Kubernetes"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/","url":"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/","name":"C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo) &#183; devops Mauro Bernal","isPartOf":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#website"},"datePublished":"2026-03-11T18:20:14+00:00","dateModified":"2026-03-11T23:02:13+00:00","breadcrumb":{"@id":"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/maurobernal.com.ar\/blog\/como-docker-cambio-la-forma-en-que-trabajo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/maurobernal.com.ar\/blog\/"},{"@type":"ListItem","position":2,"name":"C\u00f3mo Docker cambi\u00f3 la forma en que trabajo (y por qu\u00e9 tard\u00e9 en entenderlo)"}]},{"@type":"WebSite","@id":"https:\/\/maurobernal.com.ar\/blog\/#website","url":"https:\/\/maurobernal.com.ar\/blog\/","name":"devops Mauro Bernal","description":"Cuando tu trabajo es hacer que las cosas funcionen bien...","publisher":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/maurobernal.com.ar\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283","name":"Mauro Bernal","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","url":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","contentUrl":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","width":1740,"height":1740,"caption":"Mauro Bernal"},"logo":{"@id":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1"},"description":"Desarrollo de Sistemas en .Net, IT Callcenters, DBA de SQL Server, Mikrotik, Pentest y T\u00e9cnico consultor de Sistemas Bejerman","sameAs":["https:\/\/maurobernal.com.ar","https:\/\/x.com\/_maurobernal","https:\/\/youtube.com\/maurobernal"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1168","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/comments?post=1168"}],"version-history":[{"count":3,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1168\/revisions"}],"predecessor-version":[{"id":1243,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1168\/revisions\/1243"}],"wp:attachment":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/media?parent=1168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/categories?post=1168"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/tags?post=1168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}