{"id":140,"date":"2023-09-01T13:55:08","date_gmt":"2023-09-01T11:55:08","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/?page_id=140"},"modified":"2025-03-09T13:24:38","modified_gmt":"2025-03-09T11:24:38","slug":"2-9-ejecucion-de-scripts","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/es\/2-9-ejecucion-de-scripts\/","title":{"rendered":"2.9. Ejecuci\u00f3n de <em>scripts<\/em>"},"content":{"rendered":"<p>Como hemos visto, la creaci\u00f3n de un contenedor es relativamente f\u00e1cil, pero dependiendo de vuestras necesidades es posible que los ejemplos anteriores se queden cortos. Por ello extenderemos los conocimientos necesarios para crear im\u00e1genes m\u00e1s complejas.<\/p>\n<p>En primer lugar, utilizaremos el contenedor con Alpine que hemos creado anteriormente para ejecutar un <em>script<\/em> en Python.<\/p>\n<p>Si directamente pasamos los par\u00e1metros al iniciar el contenedor, nos devolver\u00e1 un error, ya que en su sistema el archivo no se encuentra:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ docker container run --rm uoc\/alpine-numpy python3 num.py<\/pre>\n<p>Siendo <code>num.py<\/code> :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">import numpy as np\r\n\r\na = np.array([1,2,3,4,5,6,7])\r\n\r\nprint (a)<\/pre>\n<p>El error siendo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">python3: can't open file '\/\/num.py': [Errno 2] No such file or directory<\/pre>\n<p>Para que funcione este comando necesitaremos enlazar los dos sistemas, el nuestro propio y el del contenedor Docker. Para ello utilizaremos el comando mount especificando d\u00f3nde est\u00e1 nuestro archivo y posicion\u00e1ndolo en el sistema del contenedor.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ docker container run --rm --mount type=bind,source=${PWD},target=\/temp uoc\/alpine-numpy python3 \/temp\/num.py<\/pre>\n<p>Hay distintos tipos de mount. En este caso utilizaremos el modo <em>bind<\/em>, que es el que nos interesa para este ejemplo. Con el <em>source<\/em> especificamos el directorio donde se ubica el <em>script<\/em>, podemos utilizar la variable ${PWD} si lanzamos el contenedor desde el mismo directorio donde est\u00e1 el <em>script<\/em>, y <em>target<\/em>, que especifica d\u00f3nde lo localizaremos en el contenedor. Es importante que cuando ejecutamos Python3 especifiquemos la carpeta donde localizamos el <em>script<\/em>, en este caso \/temp.<\/p>\n<p>De esta manera nos retornar\u00e1:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">[1 2 3 4 5 6 7]<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Como hemos visto, la creaci\u00f3n de un contenedor es relativamente f\u00e1cil, pero dependiendo de vuestras necesidades es posible que los ejemplos anteriores se queden cortos. Por ello extenderemos los conocimientos necesarios para crear im\u00e1genes m\u00e1s complejas. En primer lugar, utilizaremos el contenedor con Alpine que hemos creado anteriormente para ejecutar un script en Python. Si [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/es\/wp-json\/wp\/v2\/pages\/140"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/es\/wp-json\/wp\/v2\/comments?post=140"}],"version-history":[{"count":5,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/es\/wp-json\/wp\/v2\/pages\/140\/revisions"}],"predecessor-version":[{"id":471,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/es\/wp-json\/wp\/v2\/pages\/140\/revisions\/471"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/es\/wp-json\/wp\/v2\/media?parent=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}