­čąç Ciclo de vida de los contenedores

Ya hemos visto como ejecutar un contenedor, ahora exploraremos el ciclo de vida de los contenedores.

­čŹ┐ ┬┐C├│mo listar los contenedores en ejecuci├│n en Docker?

Para listar los contenedores en ejecuci├│n en Docker utilizamos:

docker container ls

La salida se ve algo as├ş:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

­čŹ┐ ┬┐C├│mo listar los contenedores de Docker que han sido ejecutados recientemente?

Si por el contrario lo que deseamos es listar los contenedores que hayan sido ejecutados en Docker recientemente utilizamos:

docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
d9b47a992ed4        946a0547927b        "/bin/bash"         37 minutes ago      Exited (0) 37 minutes ago                       python-container

Como vemos en el anterior ejemplo, el contenedor fue creado hace 37 minutos, y cerrado en un momento similar.

­čŹ┐ ┬┐C├│mo ejecutar y entrar al sistema operativo de un contenedor de Docker?

Para ejecutar un contenedor de Docker y entrar dentro de este vamos a ejecutar nuestro contenedor con la imagen ubuntu:16.01 y entrar dentro de este:

docker container run -it ubuntu:16.04

Abrimos otra terminal en una nueva tab y listamos los contenedores.

docker container ls

La salida se ver├í algo as├ş:

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
8e642e0826c1        ubuntu:16.04        "/bin/bash"         About a minute ago   Up About a minute                       sharp_volhard

­čŹ┐ ┬┐Qu├ę es el Moby Project?

En la ├║ltima columna mostrada en el listad de los contenedores aparecen nombres ├║nicos aleatorios que se le van dando a los contenedores.

Los nombres aleatorios provienen del Proyecto Moby (Moby Project). Este proyecto mantiene una relaci├│n estrecha con Docker. Dentro de este se encuentra un modulo para la generaci├│n de nombres aleatorios.

Ahora abandonamos nuestro contenedor.

exit

Si volvemos a listar los contenedores en ejecuci├│n docker container list, nos daremos cuenta que ya no aparece nuestro contenedor en la lista, y eso se debe a que hemos terminado su ejecuci├│n desde el momento en que salimos de este mediante exit. Sin embargo recordamos que podemos listar los contenedores que se han cerrado recientemente mediante docker container list -a.

­čŹ┐ ┬┐C├│mo es el ciclo de vida de los contenedores?

Cuando ejecutamos el comando docker container run -it ubuntu:16.04 se crea una instancia de la imagen que hemos invocado (en este caso ubuntu:16:04) y se ejecuta en un nuevo contenedor, en este momento el contenedor se encuentra en estado de arranque.

Cuando se arranca el contenedor este se encuentra en estado de ejecuci├│n, por lo que realiza las tareas que requiere e incluso podemos interactuar con el.

Apenas abandonamos el contenedor nos dimos cuenta que este contenedor cerro su ejecuci├│n, pues ya no aparece al listar los contenedores en ejecuci├│n, en este punto el contenedor de Docker se encuentra en estado detenido.

­čŹ┐ ┬┐C├│mo volver a arrancar el contenedor?

Si lo que deseamos es volver a arrancar el mismo contenedor sin tener que generar una nueva instancia, utilizamos el comando:

docker container ls -a

Veremos la lista reciente:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
8e642e0826c1        ubuntu:16.04        "/bin/bash"         15 minutes ago      Exited (0) 9 minutes ago                        sharp_volhard
d9b47a992ed4        946a0547927b        "/bin/bash"         56 minutes ago      Exited (0) 56 minutes ago                       python-container

­čŹ┐ ┬┐C├│mo ejecutar nuevamente un contenedor Docker que ha sido cerrado?

Para arrancar nuevamente el contenedor podemos utilizar su nombre (NAMES) o su identificador (CONTAINER ID).

docker container start 8e642e0826c1

No se requiere utilizar el nombre completo del identificador, basta con ingresar los primeros caracteres ├║nicos.

­čŹ┐ ┬┐C├│mo entrar al contenedor que se encuentra en ejecuci├│n?

Para acceder al contenedor que se encuentra en ejecuci├│n podemos utilizar el comando attach.

docker attach 8e642e0826c1

Dentro podemos utilizar el comando ls y este nos mostrará el contenido del sistema de archivos de Ubuntu Linux.

Para salir basta utilizar nuevamente exit, esto cerrará la ejecución del contenedor y volverá a desaparecer de la lista de contenedores en ejecución.