{"id":1514,"date":"2014-02-18T10:57:48","date_gmt":"2014-02-18T08:57:48","guid":{"rendered":"https:\/\/inlab.fib.upc.edu\/?p=1514"},"modified":"2014-02-18T10:57:48","modified_gmt":"2014-02-18T08:57:48","slug":"docker-insights-des-de-la-jasp-2","status":"publish","type":"post","link":"https:\/\/inlab.fib.upc.edu\/es\/uncategorized-ca\/docker-insights-des-de-la-jasp-2","title":{"rendered":"Docker &#8211; insights des de la Jasp"},"content":{"rendered":"<p>Docker es un proyecto open-source que permite automatizar el despliegue de aplicaciones en entornos Linux. Est\u00e1 basado en el formato est\u00e1ndar de contenedores de Linux(LXC) y permite correr aplicaciones en ambientes aislados de manera ligera.<\/p>\n<p><!--more--><\/p>\n<h2>Necessidad<\/h2>\n<p>Hace unos a\u00f1os la virtualizaci\u00f3n de sistemas era una apuesta de futuro en el mundo de las TI. Hoy en d\u00eda es una herramienta de optimizaci\u00f3n muy extendida en el mundo empresarial gracias a las ventajas que proporciona, como por ejemplo:<\/p>\n<ul>\n<li>Optimizaci\u00f3n de recursos f\u00edsicos &#8211; es posible tener m\u00e1s de un SO ejecut\u00e1ndose en una m\u00e1quina<\/li>\n<li>Permite el balanceo de carga<\/li>\n<li>Gesti\u00f3n m\u00e1s centralizada<\/li>\n<\/ul>\n<p>A medida que los sistemas se van escalando, empieza a ser necesario optimizar (a\u00fan m\u00e1s) los recursos que usamos para desplegar aplicaciones para reducir costos y mejorar la disponibilidad, y Docker nos presenta como una posible soluci\u00f3n.<\/p>\n<h2>\u00bfQu\u00e9 es Docker?<\/h2>\n<p>Docker es un proyecto open-source que permite automatizar el despliegue de aplicaciones en entornos Linux. Est\u00e1 basado en el formato est\u00e1ndar de contenedores de Linux(LXC) y permite correr aplicaciones en ambientes aislados de manera ligera.<\/p>\n<p>Docker nos permite crear \u00abim\u00e1genes\u00bb con nuestra aplicaci\u00f3n y sus dependencias, garantizando que \u00e9sta funcionar\u00e1, a escala, en producci\u00f3n o en cualquier otro ambiente. De esta manera evitamos el llamado \u00abdependency hell\u00bb y facilitamos el desarrollo y mantenimiento de las aplicaciones.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\" size-full wp-image-1507\" alt=\"\" height=\"278\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/02\/docker_functions.jpg\" width=\"582\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/02\/docker_functions.jpg 604w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/02\/docker_functions-300x144.jpg 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/02\/docker_functions-370x177.jpg 370w\" sizes=\"(max-width: 582px) 100vw, 582px\" \/><\/p>\n<address>Origen imagen : https:\/\/www.docker.io\/the_whole_story\/<\/address>\n<h3>\u00bfQu\u00e9 diferencias tiene con una MV entonces?<\/h3>\n<p>A diferencia de las m\u00e1quinas virtuales tradicionales, un contenedor Docker no incluye un sistema operativo independiente, sino que se basa en la funcionalidad del sistema operativo proporcionado por la infraestructura subyacente. Esto es gracias a usar contenedores de Linux (LXC), ya que corren sobre el mismo sistema operativo que el mismo host. Adem\u00e1s usa AuFS1 para sistema de archivos y se encarga de las redes por los usuarios.<\/p>\n<p><img decoding=\"async\" class=\" size-full wp-image-1510\" alt=\"\" height=\"340\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/02\/docker_vm.jpg\" width=\"608\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/02\/docker_vm.jpg 633w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/02\/docker_vm-300x168.jpg 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2014\/02\/docker_vm-370x207.jpg 370w\" sizes=\"(max-width: 608px) 100vw, 608px\" \/><\/p>\n<address>Origen imagen : https:\/\/www.docker.io\/the_whole_story\/<\/address>\n<h2>Ejemplos<\/h2>\n<p>Para ver ejemplos pr\u00e1cticos la web de Docker es un muy buen recurso ya que proporciona varios ejemplos, desde un simple \u00abhello world\u00bb en una aplicaci\u00f3n web en Node.js o c\u00f3mo compartir datos entre varios contenedores con CouchDB :<\/p>\n<p>http:\/\/docs.docker.io\/en\/latest\/examples\/<\/p>\n<h2>Videos-tutorial<\/h2>\n<p>A continuaci\u00f3n compartimos la trilog\u00eda de tutoriales que hemos creado con nuestra experiencia adquirida despu\u00e9s de las tareas que llevamos a cabo con Telef\u00f3nica I+D:<\/p>\n<p><strong>Tutorial Docker 1: Installation Dockerfile<\/strong><br \/>\nEn el primer v\u00eddeo se puede ver c\u00f3mo instalar Docker y c\u00f3mo crear un Dockerfile (lo que viene a ser un script para automatizar las builds de las im\u00e1genes).<br \/>\n<iframe allowfullscreen=\"\" frameborder=\"0\" height=\"315\" src=\"\/\/www.youtube.com\/embed\/NG_0DISaiLQ?list=UUFUOT6uotDe4kdCiaob8UJA\" width=\"560\"><\/iframe><\/p>\n<p><strong>Tutorial Docker 2: Tutorial PrivateRegistry<\/strong><br \/>\nEn el segundo vamos paso a paso en la creaci\u00f3n de un Registry privado. El objetivo es conseguir tener un repositorio privado donde almacenar nuestras im\u00e1genes privadas, en lugar de usar el repositorio p\u00fablico de Docker.<\/p>\n<p><iframe allowfullscreen=\"\" frameborder=\"0\" height=\"315\" src=\"\/\/www.youtube.com\/embed\/XjPJsC1c5KE?list=UUFUOT6uotDe4kdCiaob8UJA\" width=\"560\"><\/iframe><\/p>\n<p><strong>Tutorial Docker 3: Tutorial autoDeploy Conclusion<\/strong><br \/>\nEn el tercero se puede ver el script de automatizaci\u00f3n que creamos para desplegar contenedores de Docker autom\u00e1ticamente especificando ciertos par\u00e1metros de configuraci\u00f3n.<br \/>\n<iframe allowfullscreen=\"\" frameborder=\"0\" height=\"315\" src=\"\/\/www.youtube.com\/embed\/xKVGtuDwiAA?list=UUFUOT6uotDe4kdCiaob8UJA\" width=\"560\"><\/iframe><\/p>\n<p>Puede consultar el c\u00f3digo del script en el siguiente enlace: https:\/\/github.com\/PDI-DGS-Protolab\/docker_deployment<\/p>\n<h2>Recursos<\/h2>\n<p>LXC<br \/>\nhttps:\/\/help.ubuntu.com\/lts\/serverguide\/lxc.html<br \/>\nhttp:\/\/linuxcontainers.org\/<\/p>\n<p>AuFS<br \/>\nhttp:\/\/en.wikipedia.org\/wiki\/Aufs<br \/>\nhttp:\/\/www.thegeekstuff.com\/2013\/05\/linux-aufs\/<\/p>\n<p>Docker<br \/>\nhttps:\/\/www.docker.io\/the_whole_story\/<br \/>\nhttps:\/\/www.docker.io\/learn\/dockerfile\/<\/p>\n<h2>Autor\u00eda<\/h2>\n<p>Este art\u00edculo ha sido realizado por <a href=\"http:\/\/inlab.fib.upc.edu\/ca\/persones\/maria-jose-rodriguez\">Mar\u00eda Jos\u00e9 Rodr\u00edguez<\/a> y <a href=\"http:\/\/inlab.fib.upc.edu\/ca\/persones\/carlos-person\">Carlos Person<\/a> como resultado del trabajo realizado por ellos mismos y <a href=\"http:\/\/inlab.fib.upc.edu\/ca\/persones\/marc-comino\">Marc Comino<\/a>, integrantes del equipo <a href=\"http:\/\/inlab.fib.upc.edu\/ca\/ulab-upc\">uLab UPC<\/a>.<\/p>\n<address><strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\nAuFS<sup>1<\/sup><\/strong> es un sistema de archivos en capas, de modo que se puede tener una parte s\u00f3lo de lectura, y una parte de escritura, y combinarlo. De esta manera se pueden tener partes comunes del SO de s\u00f3lo lectura que se compartan a trav\u00e9s de todos los contenedores, y entonces asignar a cada contenedor su propia montura para la escritura.<\/address>\n","protected":false},"excerpt":{"rendered":"<p>Docker es un proyecto open-source que permite automatizar el despliegue de aplicaciones en entornos Linux. Est\u00e1 basado en el formato est\u00e1ndar de contenedores de Linux(LXC) y permite correr aplicaciones en ambientes aislados de manera ligera.<\/p>\n","protected":false},"author":594,"featured_media":1504,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"experteses":[],"class_list":["post-1514","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-ca"],"acf":[],"_links":{"self":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/1514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/users\/594"}],"replies":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/comments?post=1514"}],"version-history":[{"count":0,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/1514\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/media\/1504"}],"wp:attachment":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/media?parent=1514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/categories?post=1514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/tags?post=1514"},{"taxonomy":"experteses","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/experteses?post=1514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}