{"id":302,"date":"2023-10-10T11:19:26","date_gmt":"2023-10-10T09:19:26","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/?page_id=302"},"modified":"2025-02-11T14:34:26","modified_gmt":"2025-02-11T12:34:26","slug":"2-9-execucio-dscripts","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/2-9-execucio-dscripts\/","title":{"rendered":"2.9. Execuci\u00f3 d\u2019<em>scripts<\/em>"},"content":{"rendered":"<p>Com hem vist, la creaci\u00f3 d\u2019un contenidor \u00e9s relativament senzill de fer, per\u00f2, depenent de les nostres necessitats, \u00e9s possible que els exemples anteriors es quedin curts. Per aix\u00f2 hem d&#8217;ampliar els coneixements necessaris per crear imatges m\u00e9s complexes.<\/p>\n<p>En primer lloc, utilitzarem el contenidor amb Alpine que hem creat anteriorment per executar un <em>script<\/em> a Python.<\/p>\n<p>Si, directament, passem els par\u00e0metres quan iniciem el contenidor, ens retornar\u00e0 un error perqu\u00e8\u00a0 l\u2019arxiu no es troba en el seu sistema:<\/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>Sent <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>L&#8217;error \u00e9s:<\/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>Perqu\u00e8 aquesta ordre funcioni, necessitarem enlla\u00e7ar els dos sistemes, el nostre propi i el del contenidor Docker. Per aix\u00f2, utilitzarem l\u2019ordre <code>mount<\/code> especificant on \u00e9s el nostre arxiu i posicionant-lo en el sistema del contenidor.<\/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>Existeixen diferents tipus de <em>mount<\/em>. En aquest cas, utilitzarem el mode <em>bind<\/em>, que \u00e9s el que ens interessa per a aquest exemple. Amb el <em>source<\/em>, especifiquem el directori on s\u2019ubica <em>l\u2019script<\/em>, podem utilitzar la variable ${PWD} si llancem el contenidor des del mateix directori on hi ha l\u2019<em>script<\/em> i tamb\u00e9 podem utilitzar <em>target<\/em>, que especifica on localitzarem el contenidor. \u00c9s important que, quan executem Python3, especifiquem la carpeta on localitzem l\u2019<em>script<\/em>, en aquest cas \/temp.<\/p>\n<p>D\u2019aquesta manera ens retornar\u00e0:<\/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>Com hem vist, la creaci\u00f3 d\u2019un contenidor \u00e9s relativament senzill de fer, per\u00f2, depenent de les nostres necessitats, \u00e9s possible que els exemples anteriors es quedin curts. Per aix\u00f2 hem d&#8217;ampliar els coneixements necessaris per crear imatges m\u00e9s complexes. En primer lloc, utilitzarem el contenidor amb Alpine que hem creat anteriorment per executar un script [&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\/wp-json\/wp\/v2\/pages\/302"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/wp-json\/wp\/v2\/comments?post=302"}],"version-history":[{"count":7,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/wp-json\/wp\/v2\/pages\/302\/revisions"}],"predecessor-version":[{"id":453,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/wp-json\/wp\/v2\/pages\/302\/revisions\/453"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/entornos-y-contenedores\/wp-json\/wp\/v2\/media?parent=302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}