Cómo usar el comando docker container ls para listar y filtrar contenedores

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás a utilizar eficazmente el comando docker container ls (también conocido como docker ps) para listar y gestionar tus contenedores Docker. Comenzarás listando todos los contenedores en ejecución y luego ampliarás para incluir contenedores detenidos.

Además, explorarás cómo filtrar la lista de contenedores según diversos criterios, como el estado y el nombre, y aprenderás a formatear la salida para mostrar únicamente la información específica que necesitas. Finalmente, descubrirás cómo verificar rápidamente el uso de disco de tus contenedores.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/run -.-> lab-555113{{"Cómo usar el comando docker container ls para listar y filtrar contenedores"}} docker/ps -.-> lab-555113{{"Cómo usar el comando docker container ls para listar y filtrar contenedores"}} docker/pull -.-> lab-555113{{"Cómo usar el comando docker container ls para listar y filtrar contenedores"}} docker/system -.-> lab-555113{{"Cómo usar el comando docker container ls para listar y filtrar contenedores"}} end

Listar todos los contenedores en ejecución

En este paso, aprenderás cómo listar todos los contenedores Docker actualmente en ejecución. Este es un comando fundamental para gestionar tus contenedores y entender qué está activo en tu sistema.

Primero, descarguemos una imagen simple que podamos usar para ejecutar un contenedor. Usaremos la imagen hello-world, que es una imagen muy pequeña diseñada para probar tu instalación de Docker.

docker pull hello-world

Deberías ver una salida que indica que la imagen está siendo descargada y extraída.

Ahora, ejecutemos un contenedor usando esta imagen. El comando docker run crea e inicia un nuevo contenedor.

docker run hello-world

Este comando ejecutará el contenedor hello-world. El contenedor imprimirá un mensaje y luego terminará. Aunque termine, todavía se considera un contenedor que existe en tu sistema, solo que no está en ejecución.

Para ver solo los contenedores que están actualmente en ejecución, usa el comando docker ps.

docker ps

Dado que el contenedor hello-world terminó inmediatamente después de ejecutarse, el comando docker ps probablemente no mostrará ninguna salida bajo las columnas "CONTAINER ID", "IMAGE", "COMMAND", etc., porque no hay contenedores actualmente en ejecución.

Ejecutemos un contenedor que permanezca activo. Usaremos la imagen ubuntu y ejecutaremos un comando simple que mantenga el contenedor vivo. Primero, descarga la imagen ubuntu.

docker pull ubuntu

Ahora, ejecuta un contenedor Ubuntu que permanezca activo ejecutando el comando sleep infinity. La bandera -d ejecuta el contenedor en modo desatendido (en segundo plano).

docker run -d ubuntu sleep infinity

Verás una larga cadena de caracteres, que es el ID del contenedor. Esto indica que el contenedor se ha iniciado en segundo plano.

Ahora, ejecuta docker ps nuevamente para ver el contenedor en ejecución.

docker ps

Esta vez, deberías ver una salida que lista el contenedor Ubuntu que acabas de iniciar. La salida incluye información como el ID del contenedor, la imagen usada, el comando que se está ejecutando, cuándo fue creado, su estado, puertos y un nombre generado aleatoriamente.

El comando docker ps es esencial para verificar rápidamente qué contenedores están activos y consumiendo recursos en tu sistema.

Mostrar todos los contenedores incluyendo los detenidos

En el paso anterior, aprendiste cómo listar solo los contenedores en ejecución usando docker ps. Sin embargo, a veces necesitas ver todos los contenedores que existen en tu sistema, incluyendo aquellos que se han detenido. Esto es útil para limpiar contenedores antiguos o inspeccionar contenedores que han terminado con un error.

Para listar todos los contenedores, tanto en ejecución como detenidos, usa el comando docker ps con la bandera -a. La -a significa "todos" (all).

Probemos este comando ahora.

docker ps -a

Deberías ver una lista que incluye el contenedor Ubuntu en ejecución del paso anterior, así como el contenedor hello-world que terminó después de ejecutarse. La columna "STATUS" mostrará si un contenedor está "Up" (en ejecución) o "Exited" (detenido).

La salida proporciona la misma información que docker ps (ID del contenedor, imagen, comando, tiempo de creación, estado, puertos y nombre), pero para todos los contenedores, independientemente de su estado actual.

Este comando es muy útil para obtener una visión completa de todos los contenedores en tu sistema. Puedes ver qué contenedores han sido creados, incluso si no están actualmente activos.

Filtrar contenedores por estado y nombre

En este paso, aprenderás cómo filtrar la lista de contenedores según su estado o nombre. Esto es muy útil cuando tienes muchos contenedores y solo quieres ver un subconjunto específico.

El comando docker ps soporta una bandera --filter que te permite especificar criterios para listar contenedores.

Comencemos listando solo los contenedores en ejecución usando un filtro. El estado de un contenedor en ejecución es running.

docker ps --filter "status=running"

Este comando debería mostrar la misma salida que docker ps del Paso 1, listando solo el contenedor Ubuntu que está actualmente en ejecución.

Ahora, filtremos los contenedores que han terminado. El estado para un contenedor terminado es exited. Recuerda incluir la bandera -a para ver todos los contenedores, de lo contrario, el filtro no encontrará contenedores terminados si no se listan por defecto.

docker ps -a --filter "status=exited"

Este comando debería mostrar el contenedor hello-world que ejecutaste en el Paso 1, ya que su estado es "Exited".

También puedes filtrar por el nombre del contenedor. Cuando ejecutas un contenedor sin especificar un nombre usando la bandera --name, Docker asigna un nombre aleatorio. Puedes encontrar el nombre de tu contenedor Ubuntu en ejecución ejecutando docker ps. Mira la columna "NAMES".

Supongamos que el nombre de tu contenedor Ubuntu es algo como agitated_hoover. Puedes filtrar por este nombre:

docker ps -a --filter "name=agitated_hoover"

Reemplaza agitated_hoover con el nombre real de tu contenedor Ubuntu. Este comando listará el contenedor con ese nombre específico, independientemente de su estado (aunque en este caso, debería estar en ejecución).

Puedes combinar filtros también. Por ejemplo, para encontrar un contenedor en ejecución con un nombre específico:

docker ps --filter "status=running" --filter "name=agitated_hoover"

Nuevamente, reemplaza agitated_hoover con el nombre de tu contenedor.

El filtrado es una forma poderosa de gestionar e inspeccionar tus contenedores, especialmente en entornos con muchos contenedores.

Formatear la salida para mostrar información específica

En este paso, aprenderás cómo personalizar la salida del comando docker ps para mostrar solo la información que necesitas. Esto es particularmente útil para scripting o cuando deseas una vista concisa de tus contenedores.

El comando docker ps soporta una bandera --format que te permite especificar el formato de salida usando sintaxis de plantillas Go.

Comencemos listando solo los IDs de todos los contenedores.

docker ps -a --format "{{.ID}}"

Este comando mostrará una lista de IDs de contenedores, uno por línea, para todos los contenedores (en ejecución y detenidos). El {{.ID}} es un marcador de posición de plantilla Go que representa el ID del contenedor.

Ahora, listemos el ID del contenedor y el nombre de la imagen, separados por un tabulador.

docker ps -a --format "{{.ID}}\t{{.Image}}"

Deberías ver una salida como [ID del contenedor] [nombre de la imagen] para cada contenedor. \t representa un carácter de tabulación en la plantilla Go.

Puedes incluir otros campos también. Aquí algunos campos comunes que puedes usar:

  • .ID: ID del contenedor
  • .Image: Nombre de la imagen
  • .Command: Comando siendo ejecutado
  • .CreatedAt: Hora de creación
  • .Status: Estado del contenedor
  • .Ports: Puertos expuestos
  • .Names: Nombres de los contenedores

Listemos el nombre del contenedor y su estado.

docker ps -a --format "{{.Names}}: {{.Status}}"

Esto mostrará algo como [nombre del contenedor]: [estado] para cada contenedor.

También puedes usar el formato table para obtener una salida más legible con encabezados, similar a la salida por defecto pero solo con las columnas que especifiques.

docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"

Este comando mostrará una tabla con columnas para ID, Imagen, Nombres y Estado para todos los contenedores.

Formatear la salida te da control detallado sobre la información mostrada por docker ps, facilitando su análisis y uso en scripts o para necesidades específicas de reportes.

Mostrar el uso de disco de los contenedores

En este paso final, aprenderás cómo visualizar el espacio en disco utilizado por tus contenedores, imágenes y volúmenes de Docker. Esto es importante para monitorear los recursos de tu sistema e identificar dónde se está consumiendo espacio en disco por parte de Docker.

El comando docker system df proporciona un resumen del espacio en disco utilizado por los objetos de Docker. El término df significa "disk free" (espacio libre en disco), similar al comando estándar de Linux.

Ejecutemos el comando para ver el uso de disco:

docker system df

La salida mostrará un resumen que incluye:

  • Images: El tamaño total de todas las imágenes de Docker en tu sistema.
  • Containers: El tamaño total de la capa escribible para todos los contenedores. Este es el espacio utilizado por los cambios realizados en el sistema de archivos del contenedor.
  • Local Volumes: El tamaño total de todos los volúmenes locales. Los volúmenes se utilizan para el almacenamiento persistente de datos.
  • Build Cache: El tamaño de la caché de construcción utilizada durante la creación de imágenes.

Verás columnas como "Total", "Active", "Size" y "Reclaimable":

  • Total: El número total o tamaño de los objetos.
  • Active: El número de objetos actualmente en uso (por ejemplo, contenedores en ejecución, imágenes utilizadas por contenedores en ejecución).
  • Size: El espacio total en disco consumido por los objetos.
  • Reclaimable: La cantidad de espacio en disco que puede liberarse eliminando objetos no utilizados.

Para obtener una vista más detallada, puedes usar la bandera -v para una salida detallada:

docker system df -v

Esto proporcionará un desglose más detallado, incluyendo una lista de imágenes individuales, contenedores y volúmenes con sus respectivos tamaños.

Entender el uso de disco de Docker es crucial para mantener un entorno Docker saludable y evitar que tu disco se llene. Puedes usar la información de docker system df para decidir cuándo limpiar imágenes, contenedores o volúmenes no utilizados.

Resumen

En este laboratorio, aprendiste a utilizar el comando docker container ls (también conocido como docker ps) para listar contenedores Docker. Comenzaste listando solo los contenedores en ejecución usando docker ps y luego aprendiste a mostrar todos los contenedores, incluyendo los detenidos, añadiendo la bandera -a.

Además, exploraste cómo filtrar la lista de contenedores según criterios como estado y nombre utilizando la opción --filter. También aprendiste a personalizar el formato de salida para mostrar información específica usando la bandera --format y cómo visualizar el uso de disco de los contenedores con el comando docker system df.