¿Cómo es el ciclo de vida de los contenedores en Docker?
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 medianteexit
. Sin embargo recordamos que podemos listar los contenedores que se han cerrado recientemente mediantedocker 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.