Como usar o comando docker scout quickview para obter uma visão geral da imagem

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker inspect para obter uma visão geral rápida das imagens Docker. Você explorará como obter informações detalhadas sobre uma imagem específica, identificar e inspecionar a imagem construída mais recentemente e entender como extrair dados relevantes da saída da inspeção usando opções de formatação. O laboratório irá guiá-lo através de exemplos práticos usando imagens de amostra e um Dockerfile simples.

Obter uma visão geral rápida de uma imagem específica

Nesta etapa, você aprenderá como obter uma visão geral rápida de uma imagem Docker específica usando o comando docker inspect. Este comando fornece informações detalhadas sobre um objeto Docker, incluindo imagens, contêineres, volumes e redes.

Primeiro, vamos baixar uma imagem de amostra que podemos inspecionar. Usaremos a imagem hello-world, que é uma imagem muito pequena usada para testes.

docker pull hello-world

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

Agora que temos a imagem, podemos usar docker inspect para obter informações sobre ela.

docker inspect hello-world

Este comando irá gerar um grande objeto JSON contendo vários detalhes sobre a imagem hello-world, como seu ID, data de criação, arquitetura, sistema operacional e configuração.

Para obter uma visão geral rápida, você pode estar interessado em campos específicos dentro desta saída JSON. Você pode usar a flag -f ou --format com docker inspect para especificar um modelo Go que formata a saída. Por exemplo, para ver o ID da imagem e a data de criação, você pode usar o seguinte comando:

docker inspect -f '{{.Id}} {{.Created}}' hello-world

Este comando irá gerar o ID da imagem seguido por seu timestamp de criação. {{.Id}} e {{.Created}} são espaços reservados que se referem aos campos Id e Created na saída JSON de docker inspect.

Você pode explorar outros campos na saída JSON do comando completo docker inspect hello-world e usá-los em sua string de formatação para obter as informações específicas que você precisa.

Obter uma visão geral rápida da imagem mais recentemente construída

Nesta etapa, você aprenderá como identificar e obter uma visão geral rápida da imagem Docker construída mais recentemente. Isso é útil quando você está ativamente desenvolvendo e construindo imagens e deseja inspecionar rapidamente a versão mais recente.

Primeiro, vamos criar um Dockerfile simples para construir uma imagem. Em seu diretório ~/project, crie um arquivo chamado Dockerfile com o seguinte conteúdo:

FROM alpine:latest
RUN echo "Hello, Docker!" > /app/message.txt
CMD cat /app/message.txt

Este Dockerfile usa a imagem base alpine, adiciona um arquivo chamado message.txt com o conteúdo "Hello, Docker!" e define o comando para imprimir o conteúdo deste arquivo quando o contêiner é executado.

Agora, construa a imagem Docker usando o comando docker build. Vamos marcá-la com my-recent-image.

docker build -t my-recent-image .

O . no final do comando indica que o Dockerfile está no diretório atual (~/project). Você verá a saída mostrando o processo de construção.

Após a conclusão da construção, você pode listar suas imagens usando docker images.

docker images

Você deve ver my-recent-image listada, juntamente com a imagem hello-world da etapa anterior e a imagem base alpine. A imagem construída mais recentemente geralmente aparecerá no topo da lista ou terá o tempo de criação mais recente.

Para obter uma visão geral rápida da imagem construída mais recentemente, você pode combinar docker images com ferramentas de linha de comando como head e awk para extrair o ID da imagem da primeira imagem listada (que geralmente é a mais recente). Em seguida, você pode usar docker inspect com esse ID.

docker inspect $(docker images -q | head -n 1)

Vamos detalhar este comando:

  • docker images -q: Isso lista apenas os IDs das imagens.
  • head -n 1: Isso pega a primeira linha da saída, que é o ID da imagem mais recente.
  • $(...): Esta é a substituição de comando, que executa o comando dentro dos parênteses e substitui sua saída no comando externo.
  • docker inspect ...: Isso inspeciona a imagem com o ID obtido da substituição do comando.

Isso irá gerar as informações JSON detalhadas para a imagem construída mais recentemente. Você pode novamente usar a flag -f com docker inspect para formatar a saída conforme necessário, semelhante à etapa anterior.

Por exemplo, para ver o ID e a data de criação da imagem mais recente:

docker inspect -f '{{.Id}} {{.Created}}' $(docker images -q | head -n 1)

Isso fornece uma maneira rápida de obter informações-chave sobre a imagem que você acabou de construir.

Obter uma visão geral rápida de um arquivo SPDX

Nesta etapa, você aprenderá como obter uma visão geral rápida dos componentes de software dentro de uma imagem Docker, gerando e examinando um arquivo SPDX (Software Package Data Exchange). SPDX é um padrão aberto para comunicar informações de lista de materiais de software (SBOM), incluindo componentes, licenças e direitos autorais.

Gerar um arquivo SPDX para uma imagem Docker requer uma ferramenta que possa analisar as camadas da imagem e extrair as informações necessárias. Uma dessas ferramentas é o syft, uma ferramenta de linha de comando para gerar SBOMs a partir de imagens de contêiner e sistemas de arquivos.

Como o syft não está pré-instalado, vamos baixá-lo e instalá-lo. Vamos baixar a versão mais recente para Linux.

curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sudo bash -s -- -b /usr/local/bin

Este comando baixa o script de instalação para syft e o executa com sudo para instalar o binário em /usr/local/bin. Você pode ser solicitado a inserir sua senha, mas o usuário labex tem sudo sem senha.

Após a instalação, você pode verificar se o syft está instalado verificando sua versão:

syft version

Você deve ver as informações da versão para syft.

Agora, vamos gerar um arquivo SPDX para o my-recent-image que construímos na etapa anterior. Vamos gerar o resultado em um arquivo chamado my-recent-image.spdx.json no diretório ~/project.

syft my-recent-image -o spdx-json > ~/project/my-recent-image.spdx.json

Este comando diz ao syft para analisar o my-recent-image e gerar os resultados no formato SPDX JSON, redirecionando a saída para o arquivo especificado. Este processo pode levar um momento, dependendo do tamanho da imagem.

Assim que o comando for concluído, você terá um arquivo SPDX JSON contendo um inventário detalhado dos pacotes de software encontrados na imagem. Você pode visualizar o conteúdo deste arquivo usando um editor de texto como nano:

nano ~/project/my-recent-image.spdx.json

Dentro do arquivo, você encontrará informações sobre a própria imagem e uma lista de pacotes detectados, incluindo seus nomes, versões e licenças. Isso fornece uma visão geral rápida dos componentes de software presentes em sua imagem sem a necessidade de executar o contêiner ou inspecionar as camadas individuais manualmente.

Você pode rolar pelo arquivo para ver as diferentes seções e as informações que elas contêm. Procure o array packages, que lista os componentes de software detectados.

Pressione Ctrl + X para sair do nano.

Resumo

Neste laboratório, você aprendeu como obter uma visão geral rápida das imagens Docker usando o comando docker inspect. Você praticou a inspeção de uma imagem específica, puxando a imagem hello-world e usando docker inspect para visualizar suas informações detalhadas em formato JSON. Você também aprendeu como usar a flag -f com docker inspect e modelos Go para extrair e formatar campos específicos, como o ID da imagem e a data de criação, permitindo uma visão geral rápida personalizada.

Além disso, você explorou como identificar e inspecionar a imagem Docker construída mais recentemente, o que é particularmente útil durante os ciclos de desenvolvimento ativo. Isso envolveu a compreensão de como listar imagens e, possivelmente, filtrá-las ou classificá-las para encontrar a mais recente para inspeção.