{"id":1101,"date":"2023-09-01T00:00:00","date_gmt":"2023-08-31T22:00:00","guid":{"rendered":"https:\/\/programaraciegas.net\/?p=1101"},"modified":"2023-08-17T14:55:08","modified_gmt":"2023-08-17T12:55:08","slug":"que-es-docker","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=1101","title":{"rendered":"Qu\u00e9 es Docker"},"content":{"rendered":"<p>En la actualidad tanto para el uso profesional como el personal existen 3 principales plataformas o sistemas operativos para los ordenadores de escritorio: Linux, Windows y MacOS. Estas 3 plataformas publican actualizaciones y nuevas versiones para que todas las personas puedan acceder a una versi\u00f3n m\u00e1s optimizada y segura de su entorno de trabajo. Esta premisa deber\u00eda permitir que una aplicaci\u00f3n o proyecto software se pueda ejecutar en cualquier ordenador que est\u00e9 corriendo la misma plataforma para la que se dise\u00f1\u00f3 la aplicaci\u00f3n pero esto no es as\u00ed.<\/p>\n<p>Dentro de un ordenador que est\u00e1 ejecutando una de las 3 plataformas que hemos mencionado antes se ejecutan multitud de procesos, programas de apoyo y se disponen de distintas librer\u00edas que hacen de herramientas de apoyo a otras aplicaciones. Cada proceso, librer\u00eda y programas de apoyo tambi\u00e9n tienen sus correspondientes actualizaciones y nuevas versiones. Unido a todo esto se ha de mencionar que tanto Windows, MacOS y Linux permiten al usuario personalizar ciertas caracter\u00edsticas y configuraciones que permiten al usuario optimizar su m\u00e1quina a su gusto o necesidad. Por ejemplo, la configuraci\u00f3n y personalizaci\u00f3n de un ordenador dedicado a hacer de servidor web para miles de usuarios es muy distinta a la configuraci\u00f3n de un ordenador que se utiliza en casa para tareas educativas, \u00f3cio y personales.<\/p>\n<h2>En mi m\u00e1quina funciona<\/h2>\n<p>Dentro de la ingenier\u00eda del software es muy habitual que la persona encargada del desarrollo de un proyecto no pueda utilizar el ordenador que se utilizar\u00e1 como servidor en producci\u00f3n por lo que tendr\u00e1 que configurar su ordenador de trabajo con una configuraci\u00f3n lo m\u00e1s semejante posible a la que tendr\u00e1 ese servidor en producci\u00f3n. Esto casi siempre es imposible debido tanto a las diferencias en el hardware como en las posibles diferencias entre versiones y configuraciones del conjunto de librer\u00edas, procesos y programas de apoyo entre una m\u00e1quina y otra.<\/p>\n<p>En un primer momento la industria del software opt\u00f3 por el uso de <a href=\"https:\/\/programaraciegas.net\/?p=30\">m\u00e1quinas virtuales<\/a> pero esto implicaba que los equipos dedicados al desarrollo fuesen m\u00e1s potentes que los equipos de producci\u00f3n ya que la ejecuci\u00f3n de una m\u00e1quina virtual requer\u00eda tanta potencia como la m\u00e1quina anfitriona y la virtualizada.<\/p>\n<p>Con el cambio de arquitectura de proyectos monol\u00edticos a proyectos con microservicios la situaci\u00f3n mejor\u00f3. En lugar de tener que utilizar una maquina completa para ejecutar toda la aplicaci\u00f3n empaquetada en un \u00fanico ejecutable (arquitectura monol\u00edtica) se pas\u00f3 a la arquitectura de microservicios en la que un proyecto software completo se divide en muchos m\u00f3dulos peque\u00f1os y cada uno de estos m\u00f3dulos s\u00f3lo se encarga de resolver uno de los problemas existiendo una comunicaci\u00f3n interna entre cada uno de los microservicios que forman un proyecto completo.<\/p>\n<p>Con este nuevo paradigma el uso de una m\u00e1quina virtual para desarrollar un microservicio era innecesario ya que el microservicio requer\u00eda de muy poca potencia para su ejecuci\u00f3n tanto simulada durante el desarrollo como durante su explotaci\u00f3n en producci\u00f3n. Era necesario la aparici\u00f3n de un nuevo m\u00e9todo de virtualizaci\u00f3n que permitiese la ejecuci\u00f3n de un microservicio que requiera s\u00f3lo los recursos m\u00ednimos necesarios para su correcta ejecuci\u00f3n y que al ejecutarse ya incluya todo lo necesario sin necesidad de depender de la m\u00e1quina que lo ejecute. Nace Docker, un sistema de virtualizaci\u00f3n muy peque\u00f1o especializado en la ejecuci\u00f3n de microservicios.<\/p>\n<p>De esta forma un desarrollador instala Docker para crear sus entornos de ejecuci\u00f3n y desarrollar su microservicio. Una vez desarrollado puede instalar Docker en la m\u00e1quina de producci\u00f3n, trasladar el microservicio desarrollado y ejecutarlo en la m\u00e1quina final. Como Docker facilita que el microservicio se ejecute siempre con la misma configuraci\u00f3n en cualquier m\u00e1quina ya no sucede el problema de que en la m\u00e1quina de desarrollo todo iba bien y en producci\u00f3n todo va mal.<\/p>\n<p>En conclusi\u00f3n podemos decir que Docker es una herramienta que permite ejecutar programas y aplicaciones de forma aislada, sin que se afecten entre s\u00ed. Es como una caja virtual que contiene todo lo que un programa necesita para funcionar correctamente. Esto facilita la instalaci\u00f3n, ejecuci\u00f3n y distribuci\u00f3n de aplicaciones en diferentes m\u00e1quinas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En la actualidad tanto para el uso profesional como el personal existen 3 principales plataformas o sistemas operativos para los ordenadores de escritorio: Linux, Windows y MacOS. Estas 3 plataformas publican actualizaciones y nuevas versiones para que todas las personas puedan acceder a una versi\u00f3n m\u00e1s optimizada y segura de su entorno de trabajo. Esta &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/programaraciegas.net\/?p=1101\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abQu\u00e9 es Docker\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37,6],"tags":[448,87],"class_list":["post-1101","post","type-post","status-publish","format-standard","hentry","category-herramientas-software","category-programacion","tag-docker","tag-programacion-2"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/1101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1101"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/1101\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}