Cómo usar el comando docker image ls para listar y filtrar imágenes

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 images para listar y filtrar imágenes de Docker en tu sistema. Comenzarás listando todas las imágenes de nivel superior, luego explorarás cómo listar imágenes por nombre y etiqueta específicos.

Además, profundizarás en el filtrado de imágenes según su estado "dangling" (pendiente) y aplicando etiquetas. Finalmente, aprenderás a personalizar el formato de salida del comando docker images utilizando una plantilla personalizada para una visualización de información más adaptada.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/ls -.-> lab-555157{{"Cómo usar el comando docker image ls para listar y filtrar imágenes"}} docker/pull -.-> lab-555157{{"Cómo usar el comando docker image ls para listar y filtrar imágenes"}} docker/images -.-> lab-555157{{"Cómo usar el comando docker image ls para listar y filtrar imágenes"}} docker/build -.-> lab-555157{{"Cómo usar el comando docker image ls para listar y filtrar imágenes"}} end

Listar todas las imágenes de nivel superior

En este paso, aprenderás cómo listar todas las imágenes de Docker de nivel superior en tu sistema. Las imágenes de nivel superior son aquellas que has descargado (pull) o construido (build) explícitamente. No son imágenes intermedias creadas durante el proceso de construcción.

Para listar todas las imágenes de nivel superior, puedes usar el comando docker images. Este comando mostrará una tabla con información sobre cada imagen, incluyendo el repositorio, la etiqueta (tag), el ID de la imagen, la fecha de creación y el tamaño.

Intentemos listar las imágenes. Como este es un entorno nuevo, inicialmente puede que no haya muchas imágenes. Descargaremos una imagen en un paso posterior.

Abre tu terminal en el directorio ~/project y ejecuta el siguiente comando:

docker images

Deberías ver una salida similar a esta (la salida exacta puede variar según las imágenes presentes):

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE

Esta salida indica que actualmente no hay imágenes de nivel superior en tu sistema.

Listar imágenes por nombre y etiqueta

En este paso, aprenderás cómo listar imágenes específicas de Docker por su nombre y etiqueta (tag). Esto es útil cuando tienes muchas imágenes y necesitas encontrar una en particular.

El comando docker images te permite especificar un nombre de repositorio y opcionalmente una etiqueta para filtrar los resultados. El formato es docker images [REPOSITORY[:TAG]].

Primero, descarguemos una imagen para tener algo que listar. Usaremos la imagen hello-world, que es una imagen muy pequeña utilizada para pruebas.

Ejecuta el siguiente comando para descargar la imagen hello-world:

docker pull hello-world

Deberías ver una salida indicando que la imagen se está descargando:

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Ahora que tenemos la imagen hello-world, listemos solo esta imagen usando su nombre.

Ejecuta el siguiente comando:

docker images hello-world

La salida debería mostrar únicamente la imagen hello-world:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    <image_id>     <created_time>   <size>

También puedes especificar una etiqueta. Como descargamos la etiqueta latest, listemos la imagen hello-world con esta etiqueta.

Ejecuta el siguiente comando:

docker images hello-world:latest

La salida será igual al comando anterior, ya que latest es la etiqueta predeterminada si no se especifica otra:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    <image_id>     <created_time>   <size>

Si intentas listar una imagen que no existe, obtendrás una salida vacía. Por ejemplo:

docker images non-existent-image

Salida:

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE

Esto confirma que puedes filtrar imágenes por su nombre y etiqueta.

Filtrar imágenes por estado "dangling" (huérfanas)

En este paso, aprenderás a filtrar imágenes de Docker según su estado "dangling" (huérfanas). Las imágenes dangling son capas que no tienen relación con ninguna imagen etiquetada. Generalmente son el resultado de construir nuevas versiones de una imagen, lo que deja las capas antiguas sin etiqueta. Estas imágenes consumen espacio en disco y pueden eliminarse.

Para filtrar imágenes por su estado dangling, puedes usar el flag --filter con la clave dangling. El valor puede ser true para mostrar solo imágenes dangling o false para mostrar solo imágenes no dangling.

Primero, creemos una imagen dangling. Podemos hacer esto construyendo una nueva imagen que reemplace una existente. Usaremos un Dockerfile simple para esto.

Crea un archivo llamado Dockerfile en tu directorio ~/project con el siguiente contenido:

FROM alpine
CMD ["echo", "Hello, world!"]

Este Dockerfile es muy simple. Usa la imagen alpine como base y simplemente imprime "Hello, world!" cuando se ejecuta un contenedor a partir de él.

Ahora, construyamos una imagen a partir de este Dockerfile y etiquetémosla.

Ejecuta el siguiente comando para construir la imagen y etiquetarla como my-image:latest:

docker build -t my-image:latest .

Deberías ver una salida que indica el proceso de construcción:

[+] Building
...
Successfully built <image_id>
Successfully tagged my-image:latest

Ahora, modifiquemos ligeramente el Dockerfile y construyámoslo nuevamente con la misma etiqueta. Esto creará una nueva imagen con la etiqueta my-image:latest, y la imagen anterior que tenía esta etiqueta se convertirá en dangling.

Edita el Dockerfile en tu directorio ~/project para cambiar el comando:

FROM alpine
CMD ["echo", "Hello again!"]

Ahora, construye la imagen nuevamente con la misma etiqueta:

docker build -t my-image:latest .

Verás una salida similar a la construcción anterior, pero se generará un nuevo ID de imagen. La imagen anterior con la etiqueta my-image:latest ahora es dangling.

Listemos todas las imágenes para ver la imagen dangling.

Ejecuta el comando:

docker images

Podrías ver una imagen con <none> en las columnas REPOSITORY y TAG. Esta es una imagen dangling.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
my-image      latest    <new_image_id> <created_time>   <size>
<none>        <none>    <old_image_id> <created_time>   <size>
hello-world   latest    <image_id>     <created_time>   <size>

Ahora, filtremos para mostrar solo las imágenes dangling usando el flag --filter dangling=true.

Ejecuta el comando:

docker images --filter dangling=true

Deberías ver solo la imagen dangling:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
<none>        <none>    <old_image_id> <created_time>   <size>

Para ver solo imágenes no dangling, puedes usar --filter dangling=false.

Ejecuta el comando:

docker images --filter dangling=false

Esto listará todas las imágenes que no son dangling:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
my-image      latest    <new_image_id> <created_time>   <size>
hello-world   latest    <image_id>     <created_time>   <size>

Esto demuestra cómo filtrar imágenes según su estado dangling.

Filtrar imágenes por etiquetas (labels)

En este paso, aprenderás a filtrar imágenes de Docker basándote en etiquetas (labels). Las etiquetas son pares clave-valor que puedes adjuntar a objetos de Docker, incluyendo imágenes. Son útiles para organizar e identificar imágenes.

Para filtrar imágenes por etiquetas, usas el flag --filter con la clave label. El valor puede ser una etiqueta simple (label=<clave>=<valor>) o solo la clave de la etiqueta (label=<clave>) para encontrar imágenes con esa etiqueta sin importar su valor.

Primero, creemos un nuevo Dockerfile que incluya etiquetas.

Crea un archivo llamado Dockerfile.labeled en tu directorio ~/project con el siguiente contenido:

FROM alpine
LABEL maintainer="LabEx User"
LABEL version="1.0"
CMD ["echo", "Image with labels!"]

Este Dockerfile es similar al anterior pero incluye dos instrucciones LABEL.

Ahora, construyamos una imagen a partir de este Dockerfile y etiquetémosla.

Ejecuta el siguiente comando para construir la imagen y etiquetarla como labeled-image:latest:

docker build -t labeled-image:latest -f Dockerfile.labeled .

Deberías ver una salida que indica el proceso de construcción y el etiquetado exitoso de la imagen.

Ahora, listemos todas las imágenes para ver la recién creada.

Ejecuta el comando:

docker images

Deberías ver labeled-image en la lista junto con las otras imágenes.

REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
labeled-image   latest    <image_id>     <created_time>   <size>
my-image        latest    <new_image_id> <created_time>   <size>
<none>          <none>    <old_image_id> <created_time>   <size>
hello-world     latest    <image_id>     <created_time>   <size>

Ahora, filtremos imágenes por la etiqueta maintainer. Filtraremos imágenes donde la etiqueta maintainer tenga el valor "LabEx User".

Ejecuta el comando:

docker images --filter label=maintainer=LabEx User

Deberías ver solo labeled-image:

REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
labeled-image   latest    <image_id>     <created_time>   <size>

También puedes filtrar solo por la clave de la etiqueta, sin importar el valor. Filtremos imágenes que tengan la etiqueta version.

Ejecuta el comando:

docker images --filter label=version

Deberías ver nuevamente solo labeled-image:

REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
labeled-image   latest    <image_id>     <created_time>   <size>

Esto demuestra cómo filtrar imágenes usando etiquetas.

Formatear la salida usando una plantilla personalizada

En este paso, aprenderás a formatear la salida del comando docker images usando una plantilla personalizada. Esto es útil cuando deseas extraer información específica sobre imágenes en un formato legible por máquina o en un formato personalizado legible para humanos.

El comando docker images soporta el flag --format, que te permite especificar una plantilla Go para controlar la salida. Puedes usar varios marcadores de posición dentro de la plantilla para acceder a diferentes atributos de la imagen.

Probemos formatear la salida para mostrar solo el ID de la imagen y el nombre del repositorio, separados por dos puntos.

Ejecuta el siguiente comando:

docker images --format "{{.ID}}: {{.Repository}}"

Deberías ver una salida similar a esta, mostrando el ID de la imagen y el repositorio para cada imagen:

<image_id>: hello-world
<new_image_id>: my-image
<old_image_id>: <none>
<image_id>: labeled-image

Observa que la imagen dangling (huérfana) todavía muestra <none> para el repositorio.

También puedes incluir otros atributos como el tag y el tamaño. Formateemos la salida para mostrar el repositorio, tag y tamaño, separados por tabulaciones.

Ejecuta el siguiente comando:

docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

Usar table al principio de la cadena de formato crea una salida similar a una tabla con encabezados.

Deberías ver una salida similar a esta:

REPOSITORY          TAG                 SIZE
hello-world         latest              <size>
my-image            latest              <size>
<none>              <none>              <size>
labeled-image       latest              <size>

Puedes encontrar una lista de marcadores de posición disponibles en la documentación de Docker para el comando docker images. Algunos comunes incluyen:

  • .ID: ID de la imagen
  • .Repository: Nombre del repositorio de la imagen
  • .Tag: Tag de la imagen
  • .Created: Tiempo de creación de la imagen
  • .Size: Tamaño de la imagen
  • .Containers: Número de contenedores usando la imagen

Experimenta con diferentes plantillas para ver cómo puedes personalizar la salida. Por ejemplo, para listar el ID de la imagen y su tiempo de creación:

docker images --format "{{.ID}} created at {{.Created}}"

Este paso concluye el laboratorio sobre listado y filtrado de imágenes Docker. Has aprendido cómo listar todas las imágenes, filtrar por nombre, tag, estado dangling (huérfanas) y etiquetas, y formatear la salida usando plantillas personalizadas.

Resumen

En este laboratorio, aprendiste a utilizar el comando docker images para listar y filtrar imágenes de Docker. Comenzaste listando todas las imágenes de nivel superior en tu sistema. Luego, practicaste el listado de imágenes específicas por su nombre y tag después de descargar la imagen hello-world.

También exploraste cómo filtrar imágenes según su estado dangling (huérfanas) y mediante etiquetas específicas. Finalmente, aprendiste a personalizar el formato de salida del comando docker images usando una plantilla personalizada, lo que te permite mostrar únicamente la información que necesitas.