Listar solo los contenedores detenidos en Docker

David Mbochi Njonge 20 junio 2023
  1. Extraiga la imagen de Nginx del Docker Hub
  2. Listar las imágenes de Docker
  3. Ejecutar contenedores desde la imagen de Nginx
  4. Listar los contenedores en ejecución
  5. Detener un contenedor en ejecución
  6. Enumere el contenedor detenido usando el comando docker ps
  7. Enumere el contenedor detenido usando el comando docker container ls
  8. Conclusión
Listar solo los contenedores detenidos en Docker

Docker nos brinda comandos útiles que podemos usar para administrar nuestras imágenes y contenedores, pero algunos de los comandos no son obvios. Por ejemplo, podemos usar el comando de Docker docker ps para mostrar una lista de contenedores en ejecución o el comando de docker docker ps -a para mostrar una lista de todos los contenedores, estén detenidos o en ejecución.

Una funcionalidad que no es obvia es mostrar una lista de solo los contenedores detenidos. En este tutorial, aprenderemos a mostrar una lista de solo los contenedores detenidos en Docker.

Extraiga la imagen de Nginx del Docker Hub

En este tutorial, usaremos la imagen de Nginx para ejecutar contenedores desde ella y usaremos estos contenedores para lograr el objetivo de este artículo.

Abra una nueva ventana de terminal usando el atajo de teclado ALT+F12 en su computadora, luego use el siguiente comando para extraer una imagen Nginx del docker hub.

~$ docker pull nginx

Como no hemos especificado la etiqueta, este comando extraerá la última versión de Nginx. Podemos ver los detalles de la descarga en la ventana del terminal, como se muestra a continuación.

Using default tag: latest
latest: Pulling from library/nginx
e9995326b091: Pull complete
71689475aec2: Pull complete
f88a23025338: Pull complete
0df440342e26: Pull complete
eef26ceb3309: Pull complete
8e3ed6a9e43a: Pull complete
Digest: sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

Listar las imágenes de Docker

Una vez que se haya completado la descarga, podemos verificar que la imagen de Nginx se descargó usando el siguiente comando que enumera todas las imágenes.

~$ docker image ls

Si se hubieran instalado otras imágenes antes, todas se enumerarían con este comando. En nuestro caso, acabamos de mostrar la imagen utilizada en este tutorial para verificar que la imagen se descargó.

Los detalles de la imagen se muestran a continuación:

REPOSITORY                        TAG       IMAGE ID       CREATED       SIZE
nginx                             latest    76c69feac34e   2 days ago    142MB

Ejecutar contenedores desde la imagen de Nginx

Para fines de prueba, solo ejecutaremos dos contenedores con el nombre contenedor-uno y contenedor-dos, respectivamente. En la misma ventana de terminal, ejecute los siguientes comandos secuencialmente para ejecutar los dos contenedores utilizando la imagen nginx.

Ejecutando contenedor-uno:

~$ docker run --name container-one -d -p 3000:80 nginx

Producción :

9e70a29947c373df2abd4748271d252f297c6a06669f7cffb04fe95ee5fca671

Ejecutando contenedor-dos:

~$ docker run --name container-two -d -p 5000:80 nginx

Producción :

43cd017b94062e47c6c3f868ed74fb5ca7920522e870eceb58115e388e9d43a5

Tenga en cuenta que el primer contenedor expone el puerto 3000 en el host para escuchar en el puerto 80 en el contenedor, mientras que el segundo contenedor expone el puerto 5000 en el host para escuchar en el mismo puerto que el contenedor anterior.

Listar los contenedores en ejecución

En la sección anterior, hemos ejecutado dos contenedores con el nombre contenedor-uno y contenedor-dos. Para verificar si estos contenedores se están ejecutando, podemos usar el siguiente comando, que enumera todos los contenedores en ejecución.

~$ docker ps

Producción :

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                  NAMES
43cd017b9406   nginx     "/docker-entrypoint.…"   4 minutes ago    Up 4 minutes    0.0.0.0:5000->80/tcp   container-two
9e70a29947c3   nginx     "/docker-entrypoint.…"   24 minutes ago   Up 24 minutes   0.0.0.0:3000->80/tcp   container-one

Detener un contenedor en ejecución

Antes de enumerar el contenedor detenido, debemos detener un contenedor y podemos usar el siguiente comando para detener un contenedor usando su nombre. Sea libre de ejecutar y detener varios contenedores.

~$ docker stop container-one

Producción :

container-one

Cuando ejecutamos el comando docker ps, encontraremos que solo se está ejecutando container-two. En la siguiente sección, aprenderemos a enumerar solo el contenedor detenido, que es el objetivo principal de este tutorial.

Enumere el contenedor detenido usando el comando docker ps

El comando docker ps tiene un indicador --filter que podemos especificar para filtrar los contenedores en función de una condición. El valor del indicador --filter espera una condición que se utilizará para proporcionar una salida.

En la misma ventana de terminal, use el siguiente comando para filtrar contenedores con el estado de salido.

~$ docker ps --filter "status=exited"

Producción :

CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS                      PORTS                    NAMES
9e70a29947c3   nginx                   "/docker-entrypoint.…"   48 minutes ago   Exited (0) 18 minutes ago                            container-one

Enumere el contenedor detenido usando el comando docker container ls

Este comando tiene la misma sintaxis que el ejemplo anterior. El comando docker container ls tiene un indicador --filter que podemos especificar para filtrar los contenedores según una condición. Dado que el indicador --filter es el mismo, solo necesitamos proporcionar la condición para filtrar los contenedores con el estado de salido, como se muestra a continuación.

~$ docker container ls --filter "status=exited"

Producción :

CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS                      PORTS                    NAMES
9e70a29947c3   nginx                   "/docker-entrypoint.…"   48 minutes ago   Exited (0) 18 minutes ago                            container-one

Tenga en cuenta que el indicador --filter debe proporcionarse en forma de pares de clave-valor, y en caso de que haya varios filtros, asegúrese de proporcionar varios indicadores.

En este tutorial, hemos utilizado el filtro llamado estado para filtrar los contenedores según el estado. Sin embargo, la documentación de la ventana acoplable proporciona otras estrategias que podemos aprovechar para filtrar los contenedores.

Conclusión

En este tutorial, aprendimos a enumerar solo los contenedores detenidos en Docker aprovechando un contenedor Nginx. Los dos enfoques cubiertos para hacer esto incluyen enumerar un contenedor detenido usando el comando ps y enumerar un contenedor detenido usando el comando container ls.

Los dos comandos tienen un indicador --filter que acepta un par clave-valor para filtrar los contenedores en función de una condición específica.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub

Artículo relacionado - Docker Container