2. Docker

2.9. Ejecución de scripts

Como hemos visto, la creación de un contenedor es relativamente fácil, pero dependiendo de vuestras necesidades es posible que los ejemplos anteriores se queden cortos. Por ello extenderemos los conocimientos necesarios para crear imágenes más complejas.

En primer lugar, utilizaremos el contenedor con Alpine que hemos creado anteriormente para ejecutar un script en Python.

Si directamente pasamos los parámetros al iniciar el contenedor, nos devolverá un error, ya que en su sistema el archivo no se encuentra:

$ docker container run --rm uoc/alpine-numpy python3 num.py

Siendo num.py :

import numpy as np

a = np.array([1,2,3,4,5,6,7])

print (a)

El error siendo:

python3: can't open file '//num.py': [Errno 2] No such file or directory

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ónde está nuestro archivo y posicionándolo en el sistema del contenedor.

$ docker container run --rm --mount type=bind,source=${PWD},target=/temp uoc/alpine-numpy python3 /temp/num.py

Hay distintos tipos de mount. En este caso utilizaremos el modo bind, que es el que nos interesa para este ejemplo. Con el source especificamos el directorio donde se ubica el script, podemos utilizar la variable ${PWD} si lanzamos el contenedor desde el mismo directorio donde está el script, y target, que especifica dónde lo localizaremos en el contenedor. Es importante que cuando ejecutamos Python3 especifiquemos la carpeta donde localizamos el script, en este caso /temp.

De esta manera nos retornará:

[1 2 3 4 5 6 7]