Como usar o comando docker buildx history open para visualizar detalhes da construção

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker buildx history open para visualizar informações detalhadas sobre suas construções Docker (Docker builds). Você começará construindo uma imagem Docker simples usando um Dockerfile, que descreve as etapas para criar a imagem.

Após a construção da imagem, você explorará como listar o histórico de suas construções. Finalmente, você utilizará o comando docker buildx history open para abrir e inspecionar os detalhes de uma construção específica diretamente no Docker Desktop, fornecendo uma visão geral visual e abrangente do processo de construção.

Construir uma imagem Docker simples

Nesta etapa, você aprenderá como construir uma imagem Docker simples usando um Dockerfile. Um Dockerfile é um documento de texto que contém todos os comandos que um usuário pode chamar na linha de comando para montar uma imagem. O Docker pode construir imagens automaticamente lendo as instruções de um Dockerfile.

Primeiro, navegue até o diretório ~/project, que é seu diretório de trabalho para este laboratório.

cd ~/project

Agora, vamos criar um Dockerfile simples. Criaremos um arquivo chamado Dockerfile no diretório ~/project.

nano Dockerfile

Dentro do editor nano, cole o seguinte conteúdo:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y cowsay
CMD ["cowsay", "Hello, Docker!"]

Vamos analisar este Dockerfile:

  • FROM ubuntu:latest: Esta instrução especifica a imagem base para nossa nova imagem. Estamos começando com a versão mais recente do sistema operacional Ubuntu.
  • RUN apt-get update && apt-get install -y cowsay: Esta instrução executa comandos durante o processo de construção da imagem. Estamos atualizando a lista de pacotes e instalando o pacote cowsay, que é um programa simples que exibe texto em um balão de fala de uma vaca.
  • CMD ["cowsay", "Hello, Docker!"]: Esta instrução fornece o comando padrão a ser executado quando um contêiner é iniciado a partir desta imagem. Neste caso, ele executará o comando cowsay com o argumento "Hello, Docker!".

Salve o arquivo pressionando Ctrl + X, depois Y e Enter.

Agora que temos nosso Dockerfile, podemos construir a imagem Docker. Use o comando docker build. A flag -t é usada para marcar a imagem com um nome e, opcionalmente, uma tag no formato nome:tag. O . no final do comando diz ao Docker para procurar o Dockerfile no diretório atual.

docker build -t my-cowsay-image:latest .

Você verá uma saída indicando que o Docker está construindo a imagem camada por camada, executando as instruções no Dockerfile. Este processo pode levar alguns instantes, pois ele baixa a imagem base e instala o pacote cowsay.

Assim que a construção for concluída, você pode verificar se a imagem foi criada listando as imagens disponíveis usando o comando docker images.

docker images

Você deve ver my-cowsay-image listado na saída.

Finalmente, vamos executar um contêiner a partir da imagem que acabamos de construir para ver se ele funciona como esperado.

docker run my-cowsay-image:latest

Você deve ver a saída do comando cowsay:

 _______
< Hello, Docker! >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Isso confirma que nossa imagem Docker foi construída corretamente e o comando padrão está sendo executado conforme o esperado.

Listar o histórico de construção

Nesta etapa, você aprenderá como visualizar o histórico de uma imagem Docker, que mostra as camadas que compõem a imagem e os comandos usados para criar cada camada. Isso é útil para entender como uma imagem foi construída e para depuração.

Usaremos o comando docker history seguido pelo nome ou ID da imagem. Na etapa anterior, construímos uma imagem chamada my-cowsay-image. Vamos visualizar seu histórico.

docker history my-cowsay-image:latest

A saída mostrará uma tabela com várias colunas:

  • IMAGE: O ID da camada da imagem.
  • CREATED: O carimbo de data/hora quando a camada foi criada.
  • CREATED BY: O comando que criou a camada.
  • SIZE: O tamanho da camada.
  • COMMENT: Qualquer comentário associado à camada.

Você verá entradas correspondentes às instruções em nosso Dockerfile: a imagem base Ubuntu, os comandos apt-get e a instrução CMD. Cada instrução RUN em um Dockerfile cria uma nova camada na imagem.

Entender o histórico ajuda você a ver como cada instrução em seu Dockerfile contribui para a imagem final. Isso é particularmente útil ao otimizar o tamanho da imagem ou solucionar problemas de construção.

Por exemplo, você pode ver o tamanho adicionado por cada comando, o que pode ajudar a identificar camadas grandes que podem ser desnecessárias.

Vamos tentar visualizar o histórico da imagem base ubuntu:latest que usamos.

docker history ubuntu:latest

Isso mostrará o histórico da imagem Ubuntu oficial, que é muito mais longo e complexo do que o histórico de nossa imagem simples. Ele demonstra como as imagens base são construídas a partir de várias camadas.

O comando docker history fornece informações valiosas sobre a composição de suas imagens Docker.

Abrir uma construção específica no Docker Desktop

Nesta etapa, discutiremos como você normalmente visualizaria os detalhes de uma construção de imagem específica usando o Docker Desktop. Embora o ambiente LabEx forneça uma interface de linha de comando, o Docker Desktop é uma ferramenta gráfica popular que oferece uma maneira mais visual de interagir com o Docker.

Observação: O Docker Desktop é um aplicativo gráfico que é executado em sua máquina local (Windows, macOS ou Linux com um ambiente de área de trabalho). O ambiente LabEx é uma máquina virtual baseada em nuvem acessada por meio de um navegador da web, que não possui um ambiente de área de trabalho gráfico para executar o Docker Desktop. Portanto, você não pode "abrir uma construção específica no Docker Desktop" diretamente dentro deste ambiente LabEx.

No entanto, é importante entender como isso seria feito em uma configuração de desenvolvimento típica usando o Docker Desktop.

No Docker Desktop, você navegaria até a seção "Images" (Imagens). Aqui, você veria uma lista de todas as imagens Docker em seu sistema. Você pode encontrar a imagem que construiu, my-cowsay-image:latest.

Clicar no nome da imagem abriria uma visualização detalhada da imagem. Esta visualização normalmente inclui:

  • Overview (Visão geral): Informações básicas sobre a imagem, como seu tamanho, data de criação e ID.
  • Layers (Camadas): Uma representação visual das camadas da imagem, semelhante à saída de docker history, mas geralmente com mais detalhes e uma interface gráfica. Você pode inspecionar cada camada para ver os comandos que foram executados e os arquivos que foram adicionados ou modificados.
  • Tags (Tags): Uma lista de tags associadas à imagem.
  • Vulnerabilities (Vulnerabilidades): Informações sobre quaisquer vulnerabilidades de segurança conhecidas na imagem (se a verificação estiver habilitada).

Esta interface gráfica no Docker Desktop facilita a exploração do conteúdo e do histórico de uma imagem em comparação com a saída da linha de comando, especialmente para imagens complexas com muitas camadas.

Embora você não possa executar esta ação no ambiente LabEx atual, entender essa capacidade do Docker Desktop é valioso para sua jornada geral de aprendizado do Docker.

Para concluir esta etapa no ambiente LabEx, simplesmente reconheceremos o conceito.

Resumo

Neste laboratório, você aprendeu como construir uma imagem Docker simples usando um Dockerfile. Você criou um Dockerfile com instruções para usar o Ubuntu como imagem base, instalar o pacote cowsay e definir o comando padrão para executar cowsay. Em seguida, você usou o comando docker build para construir a imagem e marcá-la.

Após a construção da imagem, você explorará como listar o histórico de construção usando docker buildx history e, em seguida, usará o comando docker buildx history open para visualizar os detalhes de uma construção específica diretamente no Docker Desktop, fornecendo uma interface visual para inspecionar o processo de construção e seus artefatos.