Cómo usar el comando docker scout stream para gestionar flujos (streams)

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á cómo gestionar flujos (streams) utilizando el comando docker scout stream. Los flujos son esencialmente colecciones de imágenes, y comprender cómo interactuar con ellos es fundamental para organizar y gestionar eficazmente sus imágenes de Docker.

Comenzará aprendiendo cómo listar los flujos existentes para ver qué colecciones de imágenes están disponibles. Luego, explorará cómo listar las imágenes específicas contenidas dentro de un flujo en particular. Finalmente, aprenderá cómo registrar una imagen en un flujo para una plataforma específica, lo que le permitirá asociar imágenes con sus respectivos flujos y plataformas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/pull -.-> lab-555216{{"Cómo usar el comando docker scout stream para gestionar flujos (streams)"}} docker/tag -.-> lab-555216{{"Cómo usar el comando docker scout stream para gestionar flujos (streams)"}} docker/images -.-> lab-555216{{"Cómo usar el comando docker scout stream para gestionar flujos (streams)"}} end

Listar flujos (streams) existentes

En este paso, aprenderá cómo listar los flujos (streams) existentes en Docker. Los flujos son esencialmente repositorios o colecciones de imágenes. Listar los flujos le ayuda a ver qué colecciones de imágenes están disponibles para usted.

Primero, usemos el comando docker images para listar todas las imágenes disponibles. Este comando muestra las imágenes que están actualmente descargadas en su sistema.

docker images

Debería ver una salida similar a esta, aunque las imágenes específicas variarán dependiendo de lo que se haya descargado:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        latest    d621e9f15c2f   2 weeks ago    72.8MB
hello-world   latest    d2c94e258dcb   2 months ago   13.3kB

La columna REPOSITORY en la salida representa el nombre del flujo (stream). La columna TAG representa una versión específica dentro de ese flujo.

Para listar solo los nombres únicos de los flujos (repositorios), puede procesar la salida de docker images. Podemos usar herramientas de línea de comandos como awk y sort para lograr esto.

docker images | awk '{print $1}' | sort -u

Desglosemos este comando:

  • docker images: Este comando lista todas las imágenes.
  • |: Este es un pipe, que envía la salida del comando de la izquierda como entrada al comando de la derecha.
  • awk '{print $1}': awk es una poderosa herramienta de procesamiento de texto. {print $1} le dice a awk que imprima la primera columna de cada línea de la entrada. En la salida de docker images, la primera columna es el REPOSITORY.
  • |: Otro pipe para enviar la salida de awk a sort.
  • sort -u: sort ordena las líneas de entrada alfabéticamente. -u significa único, lo que elimina las líneas duplicadas. Esto nos da una lista de nombres de repositorios únicos, que son nuestros flujos.

La salida será una lista de nombres de repositorios únicos, como esta:

REPOSITORY
hello-world
ubuntu

Este comando lista efectivamente los flujos (repositorios) existentes que tienen imágenes descargadas en su sistema.

Listar imágenes de un flujo (stream) específico

En el paso anterior, aprendiste cómo listar todos los flujos (repositorios) existentes. Ahora, aprenderás cómo listar las imágenes pertenecientes a un flujo específico. Esto es útil cuando quieres ver las diferentes versiones (etiquetas o tags) de una imagen en particular.

Para listar las imágenes de un flujo específico, puedes usar el comando docker images seguido del nombre del flujo. Por ejemplo, para listar todas las imágenes en el flujo ubuntu, usarías:

docker images ubuntu

Antes de ejecutar este comando, asegúrate de que la imagen ubuntu esté disponible en tu sistema. Si no lo está, puedes descargarla usando el comando docker pull.

docker pull ubuntu

Deberías ver una salida que indique que la imagen se está descargando.

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

Ahora que la imagen ubuntu está disponible, puedes listar las imágenes en el flujo ubuntu:

docker images ubuntu

La salida mostrará las imágenes pertenecientes al flujo ubuntu. Si solo descargaste la etiqueta latest, verás algo como esto:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       latest    d621e9f15c2f   2 weeks ago    72.8MB

Si tuvieras otras etiquetas de ubuntu descargadas, también se listarían aquí.

Puedes reemplazar ubuntu con cualquier otro nombre de flujo que hayas visto en la salida de docker images del paso anterior para listar las imágenes en ese flujo específico. Por ejemplo, para listar las imágenes en el flujo hello-world:

docker images hello-world

Este comando te mostrará las imágenes disponibles para el flujo hello-world.

Registrar una imagen en un flujo (stream) para una plataforma específica

En este paso, aprenderás cómo "registrar" una imagen en un flujo para una plataforma específica. En la terminología de Docker, esto se hace típicamente etiquetando (tagging) una imagen existente con un nuevo nombre que incluya el flujo deseado y posiblemente información de la plataforma. Etiquetar una imagen esencialmente crea un nuevo puntero a una capa de imagen existente, lo que te permite referirte a la misma imagen con un nombre y etiqueta diferentes.

El comando básico para etiquetar una imagen es docker tag. La sintaxis es:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • SOURCE_IMAGE[:TAG]: Este es el nombre y la etiqueta opcional de la imagen existente que deseas etiquetar.
  • TARGET_IMAGE[:TAG]: Este es el nuevo nombre y la etiqueta opcional que deseas asignar a la imagen. La parte TARGET_IMAGE representa el nombre del flujo.

Usemos la imagen ubuntu que descargamos en el paso anterior. La etiquetaremos con un nuevo nombre de flujo, por ejemplo, myubuntu.

Primero, verificaremos la imagen ubuntu existente y su ID:

docker images ubuntu

Verás una salida similar a esta, observando el IMAGE ID:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       latest    d621e9f15c2f   2 weeks ago    72.8MB

Ahora, etiquetemos la imagen ubuntu:latest con el nuevo nombre de flujo myubuntu y la etiqueta v1.0:

docker tag ubuntu:latest myubuntu:v1.0

Si el comando tiene éxito, no produce mucha salida. Simplemente crea la nueva etiqueta.

Ahora, listemos las imágenes nuevamente para ver la imagen recién etiquetada:

docker images

Ahora deberías ver tanto la imagen original ubuntu:latest como la nueva imagen myubuntu:v1.0, ambas apuntando al mismo IMAGE ID:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
myubuntu     v1.0      d621e9f15c2f   2 weeks ago    72.8MB
ubuntu       latest    d621e9f15c2f   2 weeks ago    72.8MB
hello-world  latest    d2c94e258dcb   2 months ago   13.3kB

Observa que myubuntu:v1.0 tiene el mismo IMAGE ID que ubuntu:latest. Esto confirma que myubuntu:v1.0 es solo una nueva referencia a los mismos datos de imagen subyacentes.

Si bien el comando docker tag en sí no maneja explícitamente las plataformas en el proceso de etiquetado, la imagen en sí puede estar construida para una plataforma específica. Cuando descargas una imagen, Docker generalmente descarga la imagen para la arquitectura de tu sistema. Si necesitas trabajar con imágenes para diferentes plataformas, normalmente usarías herramientas como docker buildx para construir imágenes multiplataforma o especificar la plataforma durante la operación de descarga (por ejemplo, docker pull --platform linux/amd64 ubuntu). Sin embargo, para el propósito de "registrar" una imagen existente en un flujo, el comando docker tag es la forma estándar de crear una nueva referencia a esa imagen dentro de un nombre de flujo diferente.

Resumen

En este laboratorio, aprendiste cómo gestionar flujos (streams) utilizando el comando docker scout stream. Comenzaste por entender cómo listar los flujos existentes, que son esencialmente repositorios o colecciones de imágenes. Utilizaste el comando docker images para ver todas las imágenes descargadas y luego procesaste la salida con awk y sort -u para extraer y listar los nombres únicos de los flujos (repositorios).

También aprendiste cómo listar las imágenes pertenecientes a un flujo específico y cómo registrar una imagen en un flujo para una plataforma específica. Estos pasos demuestran operaciones fundamentales para organizar y gestionar tus imágenes de Docker en el contexto de los flujos.