Docker como comando
También podemos tomar una imagen cualquiera, aunque tenga una aplicación instalada y ejecutar comandos en ella:
$ docker container run busybox echo 'hola mundo!'
La primera vez que lo ejecutamos, descargará la imagen busybox e inmediatamente ejecutará el comando echo 'hola mundo!' produciendo la salida correspondiente:
Unable to find image 'busybox:latest' locally
latest: Pulling from busybox
920777304d1d: Pull complete
437595becdeb: Pull complete
Digest: sha256:4a731fb46adc5cefe3ae374a8b6020fce9
Status: Downloaded newer image for busybox:latest
hola mundo!
A partir de tener la imagen busybox local, podemos ejecutar otros comandos con ella:
$ docker container run busybox ps xa
PID USER TIME COMMAND
1 root 0:00 ps xa
Para saber por qué tenemos un único proceso con PID 1, ver Cómo funciona docker
Cada vez que ejecutamos una imagen, queda guardado el contenedor ejecutado, es decir no se borra:
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d223748120dc busybox "echo 'hola mundo!'" 17 seconds ago Exited (0) 16 seconds ago mystifying_heyrovsky
4018dd3cdd71 hello-world "/hello" 21 minutes ago Exited (0) 21 minutes ago vigorous_shannon
Ejercicios
1.
Ejecute los siguientes comandos con imagen alpine:
ls -lcat /etc/alpine-releaseps axu
2.
Compare la salida del comando mount ejecutado en el sistema GNU/Linux y dentro de un contenedor (por ej. con la imagen alpine).
Note la diferencia del directorio / montado en el contenedor y en el sistema externo.
3.
Encuentre la diferencia entre ejecutar el comando man en las imágenes de alpine y busybox.