Como usar o comando docker scout stream para gerenciar streams

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como gerenciar streams usando o comando docker scout stream. Streams são essencialmente coleções de imagens, e entender como interagir com elas é crucial para organizar e gerenciar suas imagens Docker de forma eficaz.

Você começará aprendendo como listar streams existentes para ver quais coleções de imagens estão disponíveis. Em seguida, você explorará como listar as imagens específicas contidas em um stream em particular. Finalmente, você aprenderá como registrar uma imagem em um stream para uma plataforma específica, permitindo que você associe imagens aos seus respectivos streams e plataformas.

Listar streams existentes

Nesta etapa, você aprenderá como listar streams existentes no Docker. Streams são essencialmente repositórios ou coleções de imagens. Listar streams ajuda você a ver quais coleções de imagens estão disponíveis.

Primeiro, vamos usar o comando docker images para listar todas as imagens disponíveis. Este comando mostra as imagens que estão atualmente baixadas em seu sistema.

docker images

Você deve ver uma saída semelhante a esta, embora as imagens específicas variem dependendo do que foi puxado:

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

A coluna REPOSITORY na saída representa o nome do stream. A coluna TAG representa uma versão específica dentro desse stream.

Para listar apenas os nomes de stream (repositórios) únicos, você pode processar a saída de docker images. Podemos usar ferramentas de linha de comando como awk e sort para conseguir isso.

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

Vamos detalhar este comando:

  • docker images: Este comando lista todas as imagens.
  • |: Este é um pipe, que envia a saída do comando à esquerda como entrada para o comando à direita.
  • awk '{print $1}': awk é uma poderosa ferramenta de processamento de texto. {print $1} diz ao awk para imprimir a primeira coluna de cada linha da entrada. Na saída de docker images, a primeira coluna é o REPOSITORY.
  • |: Outro pipe para enviar a saída de awk para sort.
  • sort -u: sort classifica as linhas de entrada alfabeticamente. -u significa único, que remove linhas duplicadas. Isso nos dá uma lista de nomes de repositórios únicos, que são nossos streams.

A saída será uma lista de nomes de repositórios únicos, assim:

REPOSITORY
hello-world
ubuntu

Este comando lista efetivamente os streams (repositórios) existentes que têm imagens baixadas em seu sistema.

Listar imagens de um stream específico

Na etapa anterior, você aprendeu como listar todos os streams (repositórios) existentes. Agora, você aprenderá como listar as imagens pertencentes a um stream específico. Isso é útil quando você deseja ver as diferentes versões (tags) de uma imagem em particular.

Para listar imagens de um stream específico, você pode usar o comando docker images seguido pelo nome do stream. Por exemplo, para listar todas as imagens no stream ubuntu, você usaria:

docker images ubuntu

Antes de executar este comando, vamos garantir que a imagem ubuntu esteja disponível em seu sistema. Se não estiver, você pode puxá-la usando o comando docker pull.

docker pull ubuntu

Você deve ver uma saída indicando que a imagem está sendo baixada.

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

Agora que a imagem ubuntu está disponível, você pode listar as imagens no stream ubuntu:

docker images ubuntu

A saída mostrará as imagens pertencentes ao stream ubuntu. Se você só puxou a tag latest, você verá algo como isto:

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

Se você tivesse outras tags de ubuntu baixadas, elas também seriam listadas aqui.

Você pode substituir ubuntu por qualquer outro nome de stream que você viu na saída de docker images da etapa anterior para listar as imagens naquele stream específico. Por exemplo, para listar imagens no stream hello-world:

docker images hello-world

Este comando mostrará as imagens disponíveis para o stream hello-world.

Registrar uma imagem em um stream para uma plataforma específica

Nesta etapa, você aprenderá como "registrar" uma imagem em um stream para uma plataforma específica. Na terminologia do Docker, isso é tipicamente feito marcando uma imagem existente com um novo nome que inclui o stream desejado e, potencialmente, informações da plataforma. Marcar uma imagem essencialmente cria um novo ponteiro para uma camada de imagem existente, permitindo que você se refira à mesma imagem com um nome e tag diferentes.

O comando básico para marcar uma imagem é docker tag. A sintaxe é:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • SOURCE_IMAGE[:TAG]: Este é o nome e a tag opcional da imagem existente que você deseja marcar.
  • TARGET_IMAGE[:TAG]: Este é o novo nome e a tag opcional que você deseja atribuir à imagem. A parte TARGET_IMAGE representa o nome do stream.

Vamos usar a imagem ubuntu que puxamos na etapa anterior. Vamos marcá-la com um novo nome de stream, por exemplo, myubuntu.

Primeiro, vamos verificar a imagem ubuntu existente e seu ID:

docker images ubuntu

Você verá uma saída semelhante a esta, observando o IMAGE ID:

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

Agora, vamos marcar a imagem ubuntu:latest com o novo nome de stream myubuntu e a tag v1.0:

docker tag ubuntu:latest myubuntu:v1.0

Este comando não produz muita saída se for bem-sucedido. Ele simplesmente cria a nova tag.

Agora, vamos listar as imagens novamente para ver a imagem recém-marcada:

docker images

Você deve ver agora tanto a imagem original ubuntu:latest quanto a nova imagem myubuntu:v1.0, ambas apontando para o mesmo 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

Observe que myubuntu:v1.0 tem o mesmo IMAGE ID que ubuntu:latest. Isso confirma que myubuntu:v1.0 é apenas uma nova referência aos mesmos dados de imagem subjacentes.

Embora o comando docker tag em si não lide explicitamente com plataformas no processo de marcação, a imagem em si pode ser construída para uma plataforma específica. Quando você puxa uma imagem, o Docker normalmente puxa a imagem para a arquitetura do seu sistema. Se você precisar trabalhar com imagens para diferentes plataformas, você normalmente usaria ferramentas como docker buildx para construir imagens multi-plataforma ou especificar a plataforma durante a operação de pull (por exemplo, docker pull --platform linux/amd64 ubuntu). No entanto, para o propósito de "registrar" uma imagem existente em um stream, o comando docker tag é a maneira padrão de criar uma nova referência para essa imagem dentro de um nome de stream diferente.

Resumo

Neste laboratório, você aprendeu como gerenciar streams usando o comando docker scout stream. Você começou entendendo como listar os streams existentes, que são essencialmente repositórios ou coleções de imagens. Você usou o comando docker images para ver todas as imagens baixadas e, em seguida, processou a saída com awk e sort -u para extrair e listar os nomes de stream (repositórios) únicos.

Você também aprendeu como listar as imagens pertencentes a um stream específico e como registrar uma imagem em um stream para uma plataforma específica. Essas etapas demonstram operações fundamentais para organizar e gerenciar suas imagens Docker dentro do contexto de streams.