2.9. Execució d’scripts
Com hem vist, la creació d’un contenidor és relativament senzill de fer, però, depenent de les nostres necessitats, és possible que els exemples anteriors es quedin curts. Per això hem d’ampliar els coneixements necessaris per crear imatges més complexes.
En primer lloc, utilitzarem el contenidor amb Alpine que hem creat anteriorment per executar un script a Python.
Si, directament, passem els paràmetres quan iniciem el contenidor, ens retornarà un error perquè l’arxiu no es troba en el seu sistema:
$ docker container run --rm uoc/alpine-numpy python3 num.py
Sent num.py
:
import numpy as np a = np.array([1,2,3,4,5,6,7]) print (a)
L’error és:
python3: can't open file '//num.py': [Errno 2] No such file or directory
Perquè aquesta ordre funcioni, necessitarem enllaçar els dos sistemes, el nostre propi i el del contenidor Docker. Per això, utilitzarem l’ordre mount
especificant on és el nostre arxiu i posicionant-lo en el sistema del contenidor.
$ docker container run --rm --mount type=bind,source=${PWD},target=/temp uoc/alpine-numpy python3 /temp/num.py
Existeixen diferents tipus de mount. En aquest cas, utilitzarem el mode bind, que és el que ens interessa per a aquest exemple. Amb el source, especifiquem el directori on s’ubica l’script, podem utilitzar la variable ${PWD} si llancem el contenidor des del mateix directori on hi ha l’script i també podem utilitzar target, que especifica on localitzarem el contenidor. És important que, quan executem Python3, especifiquem la carpeta on localitzem l’script, en aquest cas /temp.
D’aquesta manera ens retornarà:
[1 2 3 4 5 6 7]